【问题标题】:How can I block input after JQuery Validation SubmitHandler and Form.Submit succeeds?JQuery Validation SubmitHandler 和 Form.Submit 成功后如何阻止输入?
【发布时间】:2011-11-18 21:22:15
【问题描述】:

我的表单中有两种验证方法。 一种。 jQuery 验证 湾。 Form.Submit() 处理程序中的一些复杂的硬编码规则。

一旦 a 和 b 验证都成功,我需要禁用提交按钮,这样用户就不会提交两次。

到目前为止,我最好的尝试是在 JQuery Validation 中添加一个“submitHandler”...

jQuery("#myForm").validate(
{
    submitHandler: function (form) {
        form.submit({
            success: function (submittedForm, action) {
                alert("submitting");
                $('input[type=submit]', submittedForm).attr('disabled', 'disabled');
            }
        });
    }
});     

当然,这似乎行不通。当它到达 SubmitHandler 时,验证的两个阶段都已经运行了吗?如果 (a) JQuery 验证失败,则不会触发此事件。但是,如果 (b) 自定义验证失败,则尽管未提交表单,但仍会运行它。如果 (a & b) 都通过了,则运行它,但是永远不会到达内部的“成功”回调。所以我的输入永远不会被禁用。

这是 n 次提交验证中的 1 个的示例(它是一个动态表单,还有其他类似的验证,其中 .submit 用于在验证失败时返回 false)...

$('#myForm').submit(function () {
    // If one is checked they must both be checked.
    if ($(SessionRadioId_2).is(':checked') || $(SessionRadioId_4).is(':checked')) {
        if (!($(SessionRadioId_2).is(':checked')) || !($(SessionRadioId_4).is(':checked'))) {
            alert('If you plan on attending "ABC" you must select it in both Session 2 & 3.');
            return false;
        }
    }

谢谢, 贾斯汀

【问题讨论】:

    标签: jquery validation onsubmit


    【解决方案1】:

    由于您要避免多次提交,因此验证之后禁用提交按钮,在验证之前禁用它,然后在验证失败时重新启用它。

    【讨论】:

    • 同意这将是一个合适的解决方案。但是,我看不到任何方法来连接validationFailed 事件。请记住,它需要处理 JQuery Validation 失败和 OnSubmit 失败。另外,在调用验证之前我可以使用什么事件处理程序来禁用?
    猜你喜欢
    • 1970-01-01
    • 2016-09-05
    • 2022-01-21
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多