コードの事実:
- jQueryを使用しています
- jQuery Validate プラグインも使用
私のフォームの特徴:
- 2 つの部分に分割されたフォームがあります。すべて 1 つのフォームですが、2 つの大きな div で分割されています
- フォームの要点 (名、姓など) は最初の部分にあります。
- また、フォームの最初の部分に動的なテーブルがあるので、人々は自分自身と最大 20 人の他の人を登録できます。
- 最後に、登録コードがあります。これらのコードは 20 回までしか使用できません。つまり、1 人が自分自身を登録し、他の 19 人が登録コード
test
を使用して登録した場合、それで終わりです。test は使用可能な登録コードではなくなります。
問題:
登録コードtest
がすでに 18 回使用されているとします。そのため、バリデーターは自分自身とさらに 2 人のユーザーを登録すると正常に機能し、制限を超えているというメッセージがポップアップ表示されます。ただし、最初にコードを入力してtest
から 2 人を追加すると、フォームが true であることが検証され、次に進みます。バリデーターのルール内の登録コードのコードは次のとおりです。
regis_code: {
required: true,
reg_code: true,
remote: {
url: "Private/Code_checker.php",
data: {
num: function() {
return num_rows;
},
},
async: false
}
}
したがって、phpスクリプトは問題なく動作します。私がする必要があるのは、彼らがフォームに記入している間に検証することですが、送信する直前にも検証します。もう 1 つの問題は、フォームの最初の部分のボタンが送信ボタンではなく、現在の div を非表示にし、フォームの次の div (パート 2) を表示するボタンにすぎないことです。入力中に検証し、ボタンをクリックしてパート 2 に進むときにも検証するにはどうすればよいですか?
ボタンのコードとバリデーターの内容は次のとおりです。
$('.button2').click(function() {
if(val.form()) {
$('.box').animate({ height:520, left: '-=50', top: '+=30', width: '-=350' }, 750);
$('div.box label').animate({width: '-=100%'},500);
$('#part1').fadeOut('slow', function() {
$('#part2').fadeIn('slow');
});
$('#PaySubmit').fadeIn('slow');
}
});
var val = $('#everything').validate({...});