使用带有phoneUS方法的Jquery验证插件。
下面的代码(精简了一点)在任何地方都可以运行,当然IE除外,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选中。
我们非常感谢您的帮助!
发布于 2013-06-07 02:53:44
你没有提到哪个版本的资源管理器给你带来了麻烦,但你可以尝试以下一种或多种方法来让你的依赖方法工作……
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
}
演示:
3)使用depends
子规则的也是一种有效的方法...
PhoneF: {
required: {
depends: function(element) {
return jQuery('#mycheck').is(':checked');
}
},
phoneUS: true
}
演示:
发布于 2013-10-05 09:20:10
如果我可以建议..。
将"(|x\d{1,4})“添加到扩展的匹配项,例如: 1(999) 999-9999 x123
应像-?\d{4}(|x\d{1,4})$/那样结束
https://stackoverflow.com/questions/16951675
复制相似问题