2014-10-31 48 views
0

我有一个带按钮的窗体,还有一些jQuery来处理按钮的点击事件。在IE中,点击事件运行,然后表单提交(因为IE8的默认按钮行为是提交表单)。然而,在Chrome中,表单提交从未发生过。Chrome与IE11的不同按钮行为

$("#btnAdd").click(function() { 
    console.log('clicked'); 
    $("#btnAdd").prop('disabled', true); 
}); 

<form> 
    <button id="btnAdd">Add</button> 
</form> 

看来,这与禁用按钮有关。预计在Chrome中,禁用onclick的按钮不会自动提交,但在IE中,按钮是否被禁用并不重要?

+0

你在你的问题的标题,但在身体参考IE8提及IE11?你问(或者两者都是)? – 2014-10-31 17:23:42

+3

您应该听'

'的'submit'事件,而不是'
+0

我在比较Chrome和IE11;我在IE11中看到的行为是IE8和更高版本的预期行为。 – GendoIkari 2014-10-31 17:34:36

回答

-1

编辑: 而是按钮,尝试:

<script> 
    $(document).ready(function() { 
     $("#btnAdd").click(function() { 
      console.log('clicked'); 
     }); 
    }); 
</script> 
</head> 
<body> 
    <form> 
     <input type="button" id="btnAdd" value="add" /> 
    </form> 

它可以在所有的浏览器。

编辑:没有读好你的问题,对不起...这一个适合我。 code in fiddle

1

我会使用附加到窗体本身的onsubmit事件。这样,您可以防止默认提交,禁用按钮,然后以编程方式提交表单。

我已经使用jQuery的one(),所以处理程序将只运行一次。否则,程序提交也会触发事件并创建一个无限循环。

$("#form").one('submit',function (e) { 
    e.preventDefault(); 
    $("#btnAdd").prop('disabled', true); 
    console.log('clicked'); 
    // Below, to submit the form 
    $(this).submit(); 
}); 
<form id="form"> 
    <button id="btnAdd">Add</button> 
</form> 

在下面的的jsfiddle,我使用了一个setTimeout延迟程序化表单提交。这只是为了演示两种操作的分离:禁用按钮和提交。

WORKING EXAMPLE

+0

谢谢,我实际上使用了

+0

我不确定,但这可能是提供信息:[错误14443 - 表单在禁用提交按钮时未提交](https://bugs.webkit.org/show_bug.cgi?id=14443) – showdev 2014-10-31 19:19:36