javascript - 我如何说服这个 jQuery 按钮单击事件[在 Safari 中]提交正确的表单?

标签 javascript jquery safari

在 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/

相关文章:

javascript - 如何通过 PHP 填充 Bootstrap 弹出窗口

javascript - jquery onDropdownShown 中未定义键码警报。我不确定我哪里做错了

jquery - 使用 Rails 和 JSON 选择2

html - 是否可以让 scroll-margin-top 在 Safari 中工作?

css - 背景大小:仅在桌面 Safari 中封面不垂直对齐

javascript - 根据父 iframe 的大小动态更改 css

javascript - 无法从 Canvas 获取图像数据。我究竟做错了什么?

Javascript 生成的图片库

asp.net-mvc-2 - iframe、跨域 cookie、p3p 策略和 safari 出现错误 : A required anti-forgery token was not supplied or was invalid

javascript - 在 Chrome 选项卡上突出显示基于正则表达式的文本?