Jquery RegEx Validation

前端 未结 5 507
情书的邮戳
情书的邮戳 2020-12-31 10:52

I am wanting to check if an input field has the attribute \"pattern\" and if so, preform a regex check aganst said pattern.I know this is already done by HTML5, but I am wan

5条回答
  •  孤独总比滥情好
    2020-12-31 11:35

    As already mentioned by others you need to use an object instead of the string returned by the jQuery attr() method. You can see the difference between the two here.

    Will return "string":

    var reg = $(this).attr("pattern");
    console.log(typeof reg)
    

    Will return with "object":

    var reg = new RegExp($(this).attr("pattern"));
    console.log(typeof reg);
    

    So if you replace:

    var reg = $(this).attr("pattern");
    

    With:

    var reg = new RegExp($(this).attr("pattern"));
    

    The Uncaught TypeError: Object a-zA-Z has no method 'test' error will disappear

    ...but your validation still won't work very well. Your conditional logic says if the regex test returns TRUE then handle an error:

    if (reg.test(currentValue)) {
        //error handling
    }
    

    Instead it should handle an error if the test returns FALSE:

    if (!reg.test(currentValue)) {
        //error handling
    }
    

    This should work for you.

提交回复
热议问题