从元素中删除内联onClick
处理程序。button
您正在使用 jQuery,它消除了对内联 JavaScript 的任何需求。其次,由于 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/
编辑:
引用操作:
“......我怀疑这是因为它在调用 jQuery 之前提交......”
它不应该。调用 asubmit()
应该只触发验证,因为插件有一个submit
内置的事件监听器。您的代码中可能还有另一个问题,您没有在 OP 中向我们展示。您定义规则的方式可能存在问题。另外,你id
是summaryforms
;为什么是复数? id
的应该是唯一的,如果您在共享一个的页面上有多个form
或任何元素,id="summaryforms"
则会导致问题。
按照我上面的工作代码和 jsFiddle 演示作为您的模型,如果遇到困难,请提出问题。