0

phoneUS メソッドで Jquery Validate Plugin を使用する。

次のコード (少しストライプ化) は、もちろん私の開発者の悩みの種である 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

問題が発生している Explorer のバージョンについては言及されていませんが、次の 1 つまたは複数を試して、依存関係メソッドを機能させることができます...

1) 古いバージョンの Explorer は、末尾のコンマでチョークします。安全のために、コードから末尾の 2 つのコンマを削除してください。

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 に答える