0

1 つのリモート ルールと、その他のいくつかの基本的な必須ルールがあります。奇妙なことに、私のリモート ルールはパスしたが、他のルールの一部が失敗した場合、先に進んでフォームを送信します。リモート ルールをリストの後ろまたは前に移動して違いが生じるかどうかを確認してみましたが、違いはありませんでした。誰かがこれに遭遇しましたか?

http://jsfiddle.net/LU5sU/7/ (検証に合格するには、プロモーション コード ボックスに test と入力します。)

$('#ticket-form').validate({
onfocusout: false,
onkeyup: false,
onclick: false,
rules: {
    code: {
        required: true,
        remote: {
            url: "http://www.bobmurdoch.com/ajax.php",
            type: "post",
            async: false,
            data: {
                action: "check_code",
                code: function () {
                    return $("#code").val();
                }                    
            }
        }
    },
    first_name: {
        required: true
    },
    last_name: {
        required: true
    },
    company: {
        required: true
    },
    address: {
        required: true
    },
    city: {
        required: true
    },
    state: {
        required: true
    },
    zip: {
        required: true
    },
    phone: {
        required: true
    },
    email: {
        required: true,
        email: true
    },
    survey_question_1: {
        required: false
    }
},
messages: {
    code: {
        required: "Please enter a valid promo code",
        remote: "Please enter a valid promo code"
    },
    first_name: "Please enter a value for First Name",
    last_name: "Please enter a value for Last Name",
    company: "Please enter a value for Company",
    address: "Please enter a value for Address",
    city: "Please enter a value for City",
    state: "Please enter a value for State",
    zip: "Please enter a value for Zip/Postal Code",
    phone: "Please enter a value for Phone",
    email: {
        required: "Please enter a valid e-mail address",
        email: "Please enter a valid e-mail address"
    }
},
showErrors: function (errorMap, errorList) {
    var errors = '';
    for (var i in errorList) {
        errors = errors + errorList[i].message + "\n"
    }
    if (errors != '') {
        alert(errors);
    }
}
});
4

1 に答える 1

0

のオンライン ドキュメントremote:に従って、 を削除async: false,remote:ましたが、期待どおりに動作しているようです。

ドキュメントに従って:

$("#myform").validate({
  rules: {
    email: {
      required: true,
      email: true,
      remote: {
        url: "check-email.php",
        type: "post",
        data: {
          username: function() {
            return $("#username").val();
          }
        }
      }
    }
  }
});

jsFiddle デモ

変更したコード:

    code: {
        required: true,
        remote: {
            url: "http://www.bobmurdoch.com/ajax.php",
            type: "post",
            data: {
                action: "check_code",
                code: function () {
                    return $("#code").val();
                }                    
            }
        }
    },

OPのコメントに基づいて編集:

ポップアップ内にエラー メッセージを配置するためのカスタム関数を削除し、デフォルトのerrorPlacement:関数を使用することで、これが機能していることを示すことができます。入力は.invalid、無効な場合は.validクラスを、有効な場合はクラスを示しています。あなたの問題は他の場所にあり、私の解決策とは何の関係もありません。

デモを参照してください: http://jsfiddle.net/LU5sU/11/

于 2012-12-16T17:19:05.553 に答える