2017-08-20 46 views
-1

我目前正在嘗試動態創建輸入字段並實現選項卡自動完成功能。不幸的是,每當我監聽一個標籤並在keydown事件中調用preventDefault來阻止標籤關注其他字段時,按鍵監聽器就無法註冊標籤。防止製表符停止偵聽器的默認行爲

var element = document.createElement("input"); 


//Assign different attributes to the element. 
element.setAttribute("type", "text"); 
element.setAttribute("value", ""); 
element.setAttribute("name", "Test Name"); 
element.setAttribute("spellcheck", "false"); 
element.setAttribute("style", "width:400px"); 
element.classList.add('text'); 


element.onkeydown = function(e) { 
    if(e.keyCode == 9){ 
     e.preventDefault(); 
    } 
} 

element.onkeypress = function(e) { 
    if (!e) e = window.event; 
    var keyCode = e.keyCode || e.which; 
    if (keyCode == 13){ 
     // code 
    } else if(keyCode == 9) { 
     console.log("detected"); //never printed to console 
    } 

} 

如何在停止選項卡的同時添加自己的功能?

回答

0

Keypress在keydown後被激發,並且由於您阻止了keydown中的默認行爲,我認爲它可以防止觸發keypress事件。你應該嘗試把它放在同一個事件處理程序中,或者處理同一個事件,但這可能會很棘手,因爲沒有任何東西能夠保證它被執行的順序。

+0

謝謝,我會試試看。 – user3022980