2014-10-31 43 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