使用带有phoneUS方法的Jquery Validate插件。
下面的代码(条纹有点)可以在任何地方使用,除了IE当然是我的开发人员存在的祸根。
<script type="text/javascript">
jQuery(document).ready(function() {
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}$/);
}, "");
jQuery("#myform").validate({
rules: {
EmailF: {
required: true,
email: true
},
PhoneF:{
required: "#mycheck:checked",
phoneUS: true
},
},
messages: {
EmailF: " "
},
});
});
</script>
基本上我有一个复选框(#mycheck),当选中时,需要验证PhoneF字段。如果未选中,则无需进行验证。
正如前面提到的工作FF,Chrome,Safari甚至在iPhone上但IE无法绕过这个条件。我尝试了几种不同的方法,将所需的字段转换为函数,以检查IE是否检查了复选框是不是很好。
非常感谢任何帮助!
答案 0 :(得分:0)
您还没有提到哪个版本的Explorer会给您带来麻烦,但您可以尝试以下一个或多个方法来使您的依赖方法正常工作......
1)旧版本的资源管理器会在尾随逗号上窒息。为了安全起见,从代码中删除两个尾随逗号。
rules: {
EmailF: {
required: true,
email: true
},
PhoneF: {
required: "#mycheck:checked",
phoneUS: true
}, // <-- REMOVE this comma
},
messages: {
EmailF: " "
}, // <-- REMOVE this comma
2)此代码是另一种编写依赖关系规则的方法...
PhoneF: {
required: function(element) {
return jQuery('#mycheck').is(':checked');
},
phoneUS: true
}
DEMO:http://jsfiddle.net/TBCPM/
3)使用depends
子规则也是一种有效的方法......
PhoneF: {
required: {
depends: function(element) {
return jQuery('#mycheck').is(':checked');
}
},
phoneUS: true
}
答案 1 :(得分:0)
如果我可以建议..
将“(x \ d {1,4})”添加到扩展名的匹配中:1(999)999-9999 x123
应该像 - ?\ d {4}(| x \ d {1,4})$ /
那样结束