【问题标题】:jquery validation to check text contains no html用于检查文本的 jquery 验证不包含 html
【发布时间】:2011-03-24 16:40:06
【问题描述】:

如何执行 jquery 验证以检查 textarea 是否不包含 html 标签? (如果有错误)

(顺便说一句,我正在阻止 html 在服务器上通过)

【问题讨论】:

    标签: javascript jquery validation


    【解决方案1】:

    您可以使用 John Resig 的 HTML 解析器 (http://bit.ly/hsMq4x),或者可能是一个更简单的解决方案,它只查找开始标签。

    $('textarea').each(function() {
       if ($(this).val().match(/<(\w+)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/)) {
          alert('html found');
       }
    });
    

    Neal 的解决方案在包含有效 jquery 选择器的 textarea 上存在误报,例如仅包含“a”的 textarea。

    【讨论】:

    • 出于某种原因,尼尔斯的回答对我不起作用——不知道为什么。我知道他也举了一个例子。这对我有用。
    • @Neal 的解决方案应该可以工作,尽管有误报,如果您使用 var text = $(this).val();
    • 啊-好吧必须使用 .val(),现在 neals 解决方案也可以工作了。谢谢
    • @raklos。然后我会想:-p 哈哈。 @Neal (me) 解决方案似乎更加无缝,但如果你想要正则表达式,这也适用
    • @Neal - 谢谢 - 我支持你。答案和 cmets 的结合帮助了我。希望我可以将两者都标记为答案。
    【解决方案2】:

    试试这个尺寸:

    $('textarea').each(function(){
        var text = $(this).text();
        if($(text).length > 0){
            console.log('contains html elements')
        }
        else {
            console.log('no html elements')
        }
    });
    

    小提琴是here

    【讨论】:

    • 如果我可能会问,该脚本检测到 html 元素的具体内容是什么?显然我是一个新手。是否可以修改该脚本以去除 html 并允许输入文本?
    • @Brad,如果语句在jquery中检测文本中是否有html,是的,你可以把它去掉。
    • 谢谢尼尔,谢谢你
    • @Brad:它利用了 jQuery HTML 解析器/DOM 生成器。假设是:如果 $(text) 生成一组 DOM 元素,则输入必须是 HTML。如果不是,则输入不是 HTML。但是,请考虑以下输入:“#foo”、“.bar”、“a” - 对于它们所有 jQuery 都将返回一个非空列表(仅当它们意外匹配页面上的任何元素时才返回前两个),尽管这些输入不是 HTML。
    • 它不检测值的变化,仍然引用页面加载时提供的旧值。 :-(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 2012-11-30
    • 2016-07-27
    相关资源
    最近更新 更多