我目前正在尝试动态创建输入字段并实现标签自动完成功能。不幸的是,每当我听一个标签并在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 :(得分:0)
Keydress在keydown之后被解雇,并且由于你阻止了keydown中的默认行为,我认为它可以防止keypress事件被触发。你应该尝试将它放在同一个事件处理程序中,或者处理同一事件的处理程序,但这可能很棘手,因为没有什么能保证它执行的顺序。