2017-08-20 48 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