要素からインラインonClick
ハンドラを削除します。button
インライン JavaScript の必要性を否定する jQuery を使用しています。次に、jQuery Validate プラグインには既にsubmit
イベント ハンドラーが組み込まれているため、ボタンを の外に配置し、それらのイベントを個別<form></form>
にキャプチャする必要があります。click
インラインonclick
ハンドラを削除し、id
属性を追加しました。input
また、タグを. で閉じました/>
。
HTML :
<form id="summaryforms">
...
</form>
<div class="bookingbuttondiv">
<input type="hidden" name="bookingid" value="<?php echo $bookingid; ?>" />
<input type="button" class="button" value="Book Now" id="now" />
<input type="button" class="button" value="Book Later" id="later" />
</div>
jQuery :
$(document).ready(function() {
$('.button').each(function () {
$(this).on('click', function () {
var action;
if ($(this).attr('id') == "now") {
action = 'payment.php';
} else {
action = 'poa.php';
}
$('#summaryforms').attr('action', action).submit();
});
});
$('#summaryforms').validate({ // initialize the plugin
// any options and/or rules
});
});
デモ: http://jsfiddle.net/a9zAh/
編集:
引用OP:
「... jQueryが呼び出される前に送信するためだと思います...」
そうすべきではありません。プラグインにはイベント リスナーが組み込まれているため、 a の呼び出しsubmit()
は検証のみをトリガーする必要があります。submit
OPで表示されていないコードに別の問題がある可能性があります。ルールの定義方法に問題がある可能性があります。また、あなたid
はsummaryforms
; なぜそれは複数形ですか? id
は一意である必要があり、 をform
共有するページに複数の 、または任意の要素id="summaryforms"
がある場合、問題が発生します。
上記の作業コードと jsFiddle デモをモデルとしてフォローし、行き詰まった場合は質問してください。