0

プラグインjQueryValidateに少し問題があります。

本当に簡単です。このプラグインを使用してフォームを確認し、値が間違っている場合やフィールドが空の場合に小さなツールチップを表示したいと思います。私はそのためにqTip2を使用します、そしてそれは素晴らしい働きをします!

しかし、問題は、フォームのどこかに、ユーザーが検証コードを入力しなければならない動的な数のフィールドがあることです。入力したコードが使用しているデータベースに存在するかどうかを確認し、存在しない場合は小さなツールチップを表示したいと思います。

それで、私はそれを達成しましたが、私の質問は、この未定義のフィールド数に対して「動的」ルールを作成し、コードがデータベースに存在するかどうかをチェックする1つのPHPファイルのみを使用するにはどうすればよいですか?

これが私の標準フィールドのフォームです:

<form method="POST" action="" id="inscription-form" name="inscription-form" enctype="multipart/form-data">
    <p><input type="text" name="v_nom" id="v_nom" class="defaultInvalid" size=30 tabindex="1" value="nom" /><br />
    <input type="text" name="v_prenom" id="v_prenom" class="defaultInvalid" size=30 tabindex="2" value="pr&eacute;nom"/><br />
    <input type="text" name="v_adresse" id="v_adresse" class="defaultInvalid" size=30 tabindex="3" value="adresse"/><br />

[…]

そして、そこには未定義の数のフィールドがあります。

<input type="text" class="ticket-field" name="v_ticket_1" id="v_ticket_1" size=30 tabindex="9" value="ticket"/>
<input type="text" class="ticket-field" name="v_ticket_2" id="v_ticket_2" size=30 tabindex="10" value="ticket"/>

[…]

これが私のJSです

myForm.validate({
errorClass: "errormessage",
onkeyup: false,
errorClass: 'error',
validClass: 'valid',

rules: {

    v_nom: { required: true, minlength: 2 },
    v_prenom: { required: true, minlength: 2 },
    […]

    v_ticket_1: {
        remote: "includes/deindeal_check_tickets.php",
        async: false
    }
},
messages: {
    v_nom: { defaultInvalid: v_name_msg },
    v_prenom: { defaultInvalid: v_last_name_msg },
    […]

    v_ticket_1 : { remote: "Coupon invalide"}
},
success: function(error) {

    setTimeout(function() {
       myForm.find('.valid').qtip('destroy');
    }, 1);
},

submitHandler: function(form) {
    form.submit();
},

errorPlacement: function(error, element) {...

等々...

今では、私のPHPファイルはtrueまたはfalseを返します。それは単なるテストです。

では、クラス「ticket-field」を持つすべてのフィールドに対して1つのルールのみを定義し、他の1つのファイルのみを使用して値を確認するにはどうすればよいでしょうか。残念ながら、私はどこにも良い解決策を見つけることができませんでした。どんな提案でも大歓迎です!

ありがとう!;)

4

1 に答える 1

0

ルールメソッドのadd機能を使用して、すべてのルールを検索して設定します。validateを呼び出した後、これを行うことができます。ticket-field

myForm.validate({
     //all your options and rules, but exclude anything about v_ticket_1
});

$('.ticket-field').each(function(){
    $(this).rules('add',{
        remote: "includes/deindeal_check_tickets.php",
    });
});
于 2013-03-08T16:21:47.003 に答える