要素からインライン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()は検証のみをトリガーする必要があります。submitOPで表示されていないコードに別の問題がある可能性があります。ルールの定義方法に問題がある可能性があります。また、あなたidはsummaryforms; なぜそれは複数形ですか? idは一意である必要があり、 をform共有するページに複数の 、または任意の要素id="summaryforms"がある場合、問題が発生します。
上記の作業コードと jsFiddle デモをモデルとしてフォローし、行き詰まった場合は質問してください。