【问题标题】:Disable submit button with submitHandler使用 submitHandler 禁用提交按钮
【发布时间】:2013-08-02 13:00:52
【问题描述】:

我正在尝试阻止多次单击提交按钮并将同一项目多次上传到 MySQL。

由于验证不起作用,我根本无法按下按钮提交按钮。这意味着我无法测试代码。

我也在发布相关帖子here,为您提供更多信息。

到目前为止,我使用 jQuery 验证:

$("#UploadForm").validate({

errorLabelContainer: "#messageBox",
        wrapper: "td",
        rules: {
            auction_description: {
                required: true
            },
            auction_int_postage_type: {
                required: true
            },
            listing_type: {
                required: true
            }
        }

   //all your options here

   submitHandler:function(form){
       $('#submit').attr('disabled','disabled');
   }
});

HTML

 <form method="post" name="UploadForm" id="UploadForm"
 action="upload.php" enctype="multipart/form-data" >
 
 
 <input style="text-transform:none;"  type="text" class="button_date" 
 name="auction_bin_price" id="auction_bin_price" value="" size="15" />
 
 <input class="button2" style="border-right:none; font-size:13px;"
 name="List Item" id="submit" type="submit" value="List Item"/>
 
 </form>

【问题讨论】:

    标签: jquery jquery-validate


    【解决方案1】:

    这是一个 fiddle,其中有一个解决您的问题的工作演示。

    jQuery 1.6+

    要更改disabled 属性,您应该使用.prop() 函数。

    $("#submit").prop('disabled', true);
    $("#submit").prop('disabled', false);
    

    jQuery 1.5 及以下

    .prop() 函数不存在,但 .attr() 类似:

    设置禁用属性。

    $("#submit").attr('disabled','disabled');
    

    再次启用

    $("#submit").removeAttr('disabled');
    

    在任何版本的 jQuery 中

    如果您只处理一个元素,您始终可以依赖实际的 DOM 对象,并且可能比其他两个选项快一点:

    // assuming an event handler thus 'this'
    this.disabled = true;
    

    使用.prop().attr() 方法的优点是您可以为一组选定的项目设置属性。

    【讨论】:

    • 我可以看到它被禁用了,请检查这个小提琴。 jsfiddle.net/TSc8E/36
    • 这很糟糕,一旦连接到我的验证,它就不起作用:(验证不起作用并且提交按钮允许多次插入
    • 您为什么不简单地使用submitHandler 回调?将 initialization 方法 .validate() 放在 click 处理程序中不仅冗长,而且每次单击按钮时都会不必要地调用它。 .validate() 只需要在 DOM 就绪时调用一次。见:jsfiddle.net/TSc8E/46
    • 我只是将其注释掉以防止 404 错误并更清楚地显示禁用的按钮。但是,是的,除非submitHandler 中有ajax,否则form.submit() 是必需的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2011-03-12
    • 1970-01-01
    • 2012-11-16
    • 2010-12-30
    • 2013-06-11
    • 2016-04-03
    相关资源
    最近更新 更多