0

将 Jquery Validate 插件与 phoneUS 方法一起使用。

下面的代码(简化了一点)在任何地方都可以使用,当然 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 选中的复选框是否效果不佳。

非常感谢任何帮助!

4

2 回答 2

0

如果我可以建议..

将“(|x\d{1,4})”添加到扩展名的匹配中,例如:1(999) 999-9999 x123

应该像 -?\d{4}(|x\d{1,4})$/ 这样结束

于 2013-10-05T01:20:09.763 回答
0

您没有提到哪个版本的资源管理器给您带来麻烦,但您可以尝试以下一项或多项以使您的依赖方法正常工作...

1) 旧版本的 Explorer 会被尾随逗号阻塞。为了安全起见,从您的代码中删除两个尾随逗号。

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
}

演示:http: //jsfiddle.net/TBCPM/

3) 使用depends子规则也是一种有效的方法......

PhoneF: {
    required: {
        depends: function(element) {
            return jQuery('#mycheck').is(':checked');
        }
    },
    phoneUS: true
}

演示:http: //jsfiddle.net/UutTk/

于 2013-06-06T18:53:44.330 回答