电话号码验证损坏



我有一个电话号码验证脚本,跨多个站点突然破裂。正常运行时,它需要10个字符,将所有非数字字符(包括x,#,*,(,-)剥离,使用区域代码验证电话号码(仅出于空间而在下面的snippet中仅5个)。但是,目前,电话字段允许所有字符和任何数量的字符。只是想找出这里可能出了什么问题。

验证脚本

jQuery.validator.addMethod("phone", function(value, element) {
    if(value.length > 10)
    {
        if(value.charAt(0) == 1) {
            value = value.substr(1)
        }
        var value = value.replace(/D/ig,'');
        $(element).val(value)
    }
    var list = [201,202,203,204,205];
    var area = value.substring(0, 3);
    if(list.indexOf(parseInt(area)) == -1)
    {
        return false;
    }
    return value.length == 10
}, "Invalid Phone");

jQuery('#form form').validate({
    rules: {
        Email: {
            required: true,
            email: true
        },
        First_Name: {
            required: true,
            alpha: true
        },
        Last_Name: {
            required: true,
            alpha: true
        },
        Primary_Phone: {
            phone: true
        },
        City: {
            alpha: true
        }
    },
    messages: {
        required: "Required"
    }
});

电话字段

<input name="Primary_Phone" type="tel" class="phone form-control" placeholder="5555555555" required="">

给出的脚本,如果用户输入大于10个字符,则所有非数字字符均被条纹。我认为您想划定所有非数字字符,无论用户输入多少个字符?

jQuery.validator.addMethod("phone", function(value, element) {
    var value = value.replace(/D/ig,'');
    $(element).val(value)
    if(value.length > 10)
    {
        if(value.charAt(0) == 1) {
            value = value.substr(1)
        }
    }
    var list = [201,202,203,204,205];
    var area = value.substring(0, 3);
    if(list.indexOf(parseInt(area)) == -1)
    {
        return false;
    }
    console.log(value);
    return value.length == 10
}, "Invalid Phone");
jQuery('form').validate({
    rules: {
        Primary_Phone: {
            phone: true
        },
    },
    messages: {
        required: "Required"
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"></script>
<form>
  <input name="Primary_Phone" type="tel" class="phone form-control" placeholder="5555555555" required="">
</form>

最新更新