jQuery验证插件,音素字段正在破坏表单

jQuery验证插件,音素字段正在破坏表单,jquery,plugins,jquery-validate,Jquery,Plugins,Jquery Validate,我一直在使用jquery验证插件开发一个简单的表单,用于浏览器端验证,不知为什么,“phoneUS”规则似乎破坏了其余的验证代码 只要该字段(“tel”)在表单上为空,验证将按预期进行。但是,如果在电话字段中输入了任何内容(包括字母),则跳过验证并提交表单,即使其他必填字段留空也是如此。但是,如果从代码中删除“phoneUS”规则,则应用于“tel”输入的其他验证规则仍然适用。不用说,我完全糊涂了 剧本是: <script type="text/javascript"> $(docu

我一直在使用jquery验证插件开发一个简单的表单,用于浏览器端验证,不知为什么,“phoneUS”规则似乎破坏了其余的验证代码

只要该字段(“tel”)在表单上为空,验证将按预期进行。但是,如果在电话字段中输入了任何内容(包括字母),则跳过验证并提交表单,即使其他必填字段留空也是如此。但是,如果从代码中删除“phoneUS”规则,则应用于“tel”输入的其他验证规则仍然适用。不用说,我完全糊涂了

剧本是:

<script type="text/javascript">
$(document).ready(function(){
$('#survey1').validate({
    rules: {
    firstname: {
            required: true,
            },      

    lastname: {
            required: true
            },

    address1: {
            required: true
            },

    city: {
            required: true
            },      

    state: {
            required: true
            },  

    zip: {
            required: true,
            digits: true
            },  

    tel: {
            required: true,
            phoneUS: true
            },  

    email: {
            email: true
            }

   }



   });
});

</script>

$(文档).ready(函数(){
$(“#调查1”)。验证({
规则:{
名字:{
要求:正确,
},      
姓氏:{
必填项:true
},
地址1:{
必填项:true
},
城市:{
必填项:true
},      
声明:{
必填项:true
},  
邮编:{
要求:正确,
数字:真
},  
电话:{
要求:正确,
真的吗
},  
电邮:{
电子邮件:真的
}
}
});
});
标签和输入字段只是简单的文本框,名称与脚本匹配。表单操作设置为使用php文件将结果通过电子邮件发送到静态电子邮件地址。如果有其他有用的信息,我会提供的

我对jQuery比较陌生,所以可以随意提供指针(多余的字符等)


谢谢

jqueryvalidate没有
phoneUS
函数标准;你必须加上它。在执行
$('#survey1').validate()之前,调用此函数:

// Add US Phone Validation
jQuery.validator.addMethod('phoneUS', function(phone_number, element) {
    phone_number = phone_number.replace(/\s+/g, ''); 
    return this.optional(element) || phone_number.length > 9 &&
        phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
}, 'Please enter a valid phone number.');
您需要包括包含
phoneUS
规则/方法的

或者,如果您不想包含另一个JavaScript文件,可以手动添加
phoneUS
规则/方法:

jQuery.validator.addMethod("phoneUS", function(phone_number, element) {
    phone_number = phone_number.replace(/\s+/g, "");
    return this.optional(element) || phone_number.length > 9 &&
        phone_number.match(/^(\+?1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
}, "Please specify a valid phone number");

演示:

仅供参考,在
.validate()
之前或之后放置
addMethod()
并不重要。看:啊哈!现在看起来很简单。。。但是非常感谢您的快速回复!关于你对指针的要求。乍一看,我没有发现语法错误,但建议您正确缩进代码,以便于阅读和调试。谢谢您的提示!这非常有用。