【问题标题】:Do not allow special characters jQuery不允许特殊字符 jQuery
【发布时间】:2013-08-05 06:39:11
【问题描述】:

这里有一些错误,请你们告诉我我做错了什么

function verifyGroup(groupVal, errorid) {

    groupVal = $.trim(groupVal);

    if (groupVal != '') {

        var splChars = "*|,\":<>[]{}`\';()@&$#%!+-";
        for (var i = 0; i < groupVal.length; i++) {
            console.log(groupVal.charAt(i)+' == '+splChars.indexOf(groupVal.charAt(i)));

            if (splChars.indexOf(groupVal.charAt(i)) != -1) {

                $("#" + errorid).addClass("form-error").html("Illegal characters detected!");
                return false;
            } else {
                $("#" + errorid).removeClass("form-error").html("");
                return true;
            }
        }
    } else {
        $("#" + errorid).addClass("form-error").html("Group name should not be empty");
        return false;
    }
}

DEMO

【问题讨论】:

    标签: javascript jquery logic


    【解决方案1】:

    使用正则表达式

    function verifyGroup(groupVal, errorid) {
    
        groupVal = $.trim(groupVal);
        console.log(groupVal);
        console.log(errorid);
        if (groupVal != '') {
    
            var regex = /[*|,\\":<>\[\]{}`';()@&$#%!+-]/;
            if(regex.test(groupVal)){
                $("#" + errorid).addClass("form-error").html("Illegal characters detected!");
                return false;
            } else {
                $("#" + errorid).removeClass("form-error").html("valid");
                return true;
            }
        } else {
            $("#" + errorid).addClass("form-error").html("Group name should not be empty");
            return false;
        }
    }
    $(function() {
        // Handler for .ready() called.
    
        $('#submit').click(function(){
            verifyGroup($('#ipId_create').val(), 'error_id');
        });
    });
    

    演示:Fiddle

    【讨论】:

    • 嘿伙计,非常感谢,它运作良好,但想知道,1.我的错误是什么,因为 indexOF 应该有效。 2. IS .test(),对这种验证总是有好处的。
    • @SAM 这是因为index 条件的else 部分中的return true。请参阅jsfiddle.net/arunpjohny/fAywy/3 问题是,如果第一个字符不是特殊字符,则您不继续测试...它只是返回 true
    【解决方案2】:

    -1 的比较应该是== 而不是!=

    【讨论】:

    • 这应该是一条评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    相关资源
    最近更新 更多