在 jQuery 'ready' block 中,我有:
// bind print work order button to form submit
$('#print_work_order_button').click(function(){
$('#print_work_order_form').submit();
});
...在 HTML 中(忽略变量替换代码...它工作正常):
<form id="print_work_order_form" method="post" action="<TMPL_VAR NAME=SCRIPT_NAME>" target="_blank">
<input type="hidden" name="action" value="printWorkOrder">
<input type="hidden" name="case_id" value="<TMPL_VAR NAME=ID>">
<input type="hidden" name="session_id" value="<TMPL_VAR NAME=SESSION_ID>">
</form>
但是,当我单击以下按钮时:
<input id="print_work_order_button" type="button" value="Print Work Order">
...提交了不同的表单。提交的表单是 case_form,它也在 jQuery 就绪 block 中进行验证:
// validate main form
$('#case_form').validate({
debug: false,
rules: {
phone: {
phoneUS: true,
required: true
}
[more rules etc...]
},
messages: {
phone: '555-555-5555',
client_group_id: 'X',
description: 'X',
backup_data: 'X',
first_name: 'X',
last_name: 'X',
email: 'X'
},
invalidHandler: function(form, validator) {
var errors = validator.numberOfInvalids();
if (errors) {
var message = errors == 1
? 'You missed 1 field.'
: 'You missed ' + errors + ' fields.';
displayMessage(message);
}
},
submitHandler: function(form) {
displayMessage('Saving and syncing with Remedy... we appreciate your patience.', '1');
form.submit();
}
});
我最近唯一的更改是将此验证例程移至“就绪” block ,所以我认为这就是问题所在,但我不知道如何解决。我需要在“就绪” block 中进行验证才能使其正常工作...那么如何修复其他不相关的表单提交?
注意:奇怪的是,这似乎是 Safari 独有的错误。我还无法在任何其他浏览器中重现。
最佳答案
您可以使用提交按钮吗?
<form id="print_work_order_form" method="post" action="<TMPL_VAR NAME=SCRIPT_NAME>" target="_blank">
<input type="hidden" name="action" value="printWorkOrder">
<input type="hidden" name="case_id" value="<TMPL_VAR NAME=ID>">
<input type="hidden" name="session_id" value="<TMPL_VAR NAME=SESSION_ID>">
<input id="print_work_order_button" type="submit" value="Print Work Order">
</form>
$('#print_work_order_form').submit();
或
$('#print_work_order_form').validate();
关于javascript - 我如何说服这个 jQuery 按钮单击事件[在 Safari 中]提交正确的表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6049197/