2014-06-12 49 views
3

我有一個JQuery(1.8)Datatable(1.10),其中某些字段就地可編輯,即點擊它們會創建一個輸入元素,可以輸入新數據以更新表格。IE8單擊事件問題

在IE8中(但不是在Chrome或Firefox中,我沒有IE版本),在可編輯字段中按return,似乎也會爲表格外的按鈕生成「點擊」事件。這是不幸的,因爲這個按鈕打開一個Bootstrap模式對話框。

爲什麼這可能會發生,解決它的最好方法是什麼? AFAICT沒有輸入字段的點擊處理程序(有一個鍵入處理程序返回false以停止傳播)。目前我認爲這是一些涉及IE8如何執行不同事件的問題,但我不確定如何在此按鈕上生成單擊事件。

輸入事件偵聽器是:

_setupEventListeners: function (tableEditor) { 
    // Listen for key presses to trigger any finalisation actions 
    this.element.on('keyup', function (event) { 
    switch (event.keyCode) { 
    // return or enter keys 
    case KEYCODE_ENTER: 
     tableEditor.saveAndClose(); 
     break; 
    // esc key 
    case KEYCODE_ESCAPE: 
     tableEditor.revertAndClose(); 
     break; 
    } 
    // may be overkill as JQ does stopPropagation if false returned?? 
    event.stopPropagation(); 
    (event.preventDefault) ? event.preventDefault() : event.returnValue = false; 
    return false; 
    }); 
    }, 

按鈕事件處理程序是:

$(tableId + '-addRow').click(function (event) { 
    console.log("AddRow click"); 
    // modal opened here.... 
}); 
+0

我想,但它是一個內部工具和跨多個模塊分佈不幸。我會嘗試編輯這個問題以包含它的一部分。 – vogomatix

+0

添加的代碼示例... – vogomatix

+0

也許您所說的按鈕是「聚焦」的,當您按下**時,輸入**結果會出現此類行爲 – kidwon

回答

4

參見http://tjvantoll.com/2013/05/22/why-are-enter-keypresses-clicking-my-buttons-in-ie/

具體地說

Internet Explorer有一個惱人的怪癖,在IE10中仍然存在:當在文本框中按下Enter鍵時,即使沒有該按鈕,提交按鈕也可以是 [...]沒有其他 瀏覽器顯示此行爲。

短期的解決辦法:使你的按鈕type='button'而不是type='submit'

+0

我只是檢查一下並回復你...我只注意到我沒有指定按鈕類型,所以這可能是一個潛在的主角 – vogomatix

+0

謝謝 - 看起來像這是回答 – vogomatix