【问题标题】:properly disabling the submit button正确禁用提交按钮
【发布时间】:2009-05-24 11:12:58
【问题描述】:

这是我用来禁用按钮的代码

            $("#btnSubmit").attr('disabled', 'disabled')
            $("#btnSubmit").disabled = true;

这是我的提交按钮

<input id="btnSubmit" class="grayButtonBlueText" type="submit" value="Submit" />

该按钮虽然看起来已禁用,但您仍然可以单击它.. 这是用 FF 3.0 和 IE6 测试的

我在这里做错了吗?

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    如果它是一个真实的表单,即不是javascript事件处理,这应该可以工作。

    如果您使用 onClick 事件处理按钮,您会发现它可能仍会触发。如果你这样做,你最好在你的 JS 中设置一个变量,比如 buttonDisabled 并在处理 onClick 事件时检查该变量。

    否则试试

    $(yourButton).attr("disabled", "true");
    

    如果在所有这些之后,你仍然一无所获,你可以使用 jquery 手动“打破”按钮(现在这变得越来越严重了):

    $(submitButton).click(function(ev) {
        ev.stopPropagation();
        ev.preventDefault();
    });
    

    这应该会阻止按钮像按钮一样工作。

    【讨论】:

      【解决方案2】:

      根据表单提交的处理方式,您可能还需要删除任何单击处理程序和/或添加一个中止提交的处理程序。

      $('#btnSubmit').unbind('click').click( function() { return false; } );
      

      当(如果)您重新启用按钮时,您必须再次添加点击处理程序。

      【讨论】:

        【解决方案3】:

        您需要在浏览器中处理 Back/Prev 按钮。 示例如下

        1) 创建form.js:

        (function($) {
            $.enhanceFormsBehaviour = function() {
                $('form').enhanceBehaviour();
            }
        
            $.fn.enhanceBehaviour = function() {
                return this.each(function() {
                    var submits = $(this).find(':submit');
                    submits.click(function() {
                        var hidden = document.createElement('input');
                        hidden.type = 'hidden';
                        hidden.name = this.name;
                        hidden.value = this.value;
                        this.parentNode.insertBefore(hidden, this)
                    });
                    $(this).submit(function() {
                        submits.attr("disabled", "disabled");
                    });         
                    $(window).unload(function() {
                        submits.removeAttr("disabled");
                    })
                 }); 
            }
        })(jQuery);
        

        2) 添加到您的 HTML:

        <script type="text/javascript">
            $(document).ready(function(){
                $('#contact_frm ).enhanceBehaviour();
            });
        </script>
        
        <form id="contact_frm" method="post" action="/contact">
           <input type="submit" value="Send" name="doSend" />
        </form>
        

        完成:)

        【讨论】:

          猜你喜欢
          • 2015-08-28
          • 2020-04-10
          • 1970-01-01
          • 1970-01-01
          • 2023-03-16
          • 2011-03-12
          • 1970-01-01
          • 2010-12-30
          • 2013-06-11
          相关资源
          最近更新 更多