Textarea专注于非常简单的代码无法正常工作

时间:2015-10-14 07:28:39

标签: javascript jquery regex

我写了以下代码。

$("input,textarea").blur(function () {
        debugger;
        var val = $.trim($(this).val());
        if (val != "") {
            if (containsHTMLTags(val) == true) {                 
                $(this).css({ "border": "1px solid red" });
                $(this).focus();    
            }
        }      
    });

    function containsHTMLTags(str) {
        if (str.match(/([\<])([^\>]{1,})*([\>])/i) == null)
            return false;
        else
            return true;
    }

代码使用html输入的正则表达式检查所有输入和textarea控件的值。如果正则表达式失败我想专注于控制,我不知道为什么 $(this).focus(); 这行代码不起作用。

请帮忙! 感谢

3 个答案:

答案 0 :(得分:0)

您需要将正则表达式更改为:

str.match(/([<|>])/gi) == null

$("input,textarea").blur(function () {
    var val = $.trim($(this).val());
    if (val != "") {
        if (containsHTMLTags(val) == true) {
            $(this).css({
                "border": "1px solid red"
            });
            $(this).focus();
            
        }
    }
});

function containsHTMLTags(str) {
    console.log(str.match(/([<|>])/gi))
    if (str.match(/([<|>])/gi) == null) 
        return false;
    else 
        return true;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea></textarea>
<input/>

答案 1 :(得分:0)

一旦触发了模糊事件,就会触发下一个元素的焦点事件,您可以在该处理程序中运行您的代码

你可以通过一个小技巧来实现 -

$("input,textarea").blur(function () {
    var val = $.trim($(this).val());
    console.log(val);
    if (val != "") {
        if (containsHTMLTags(val) == true) {
            $(this).css({
                "border": "1px solid red"
            });
            var r=$(this);
            r.next().on('focus',function(){ //bind a event to get focus again
            r.focus();
            r.next().off('focus'); //unbind it
            });


        }
    }
});

LIVE https://jsfiddle.net/mailmerohit5/z400jx87/

答案 2 :(得分:-1)

最后花了2个小时解决了这个问题。 Web表单的所有控件都是从数据库生成的,因此每个控件的id基本上都是表的主键。 Jquery认识id应该以字符开头。请在网上阅读。

这是我正在使用的工作代码

   $("input,textarea").blur(function () {
        var val = $.trim($(this).val());
        //console.log(val);
        if (val != "") {
            if (containsHTMLTags(val) == true) {
                debugger;
                $(this).css({
                    "border": "1px solid red"
                });
                var s = $(this).attr("id");
                document.getElementById(s).focus();

            }
        }
    });

    function containsHTMLTags(str) {
        if (str.match(/([\<])([^\>]{1,})*([\>])/i) == null)
            return false;
        else
            return true;
    }

非常感谢帮助我的所有成员。

由于