继续关注按键上的输入类型文本/搜索

时间:2017-08-26 15:08:04

标签: javascript

我已经写了一个类型文本的简单输入,但当我在光标位于文本框内时按Enter键时,它会失去焦点。如何忽略输入键以停止从文本框中失去焦点?我尝试过这样的事情:

<input type="text" (keyup)="keepFocus($event)" />

和keepFocus()是一种方法:

keepFocus(e) {
 e.target.select();
}

但每次按一个键都会调用此方法,这不是很有效。有没有更好的解决方案来处理这种行为?

3 个答案:

答案 0 :(得分:2)

您只捕获回车键,并在按下时阻止默认

&#13;
&#13;
document.getElementById('myInput').addEventListener('keypress', function(event) {
  if (event.which === 13) event.preventDefault();
});
&#13;
<input type="text" id="myInput" />
&#13;
&#13;
&#13;

答案 1 :(得分:1)

另一种方法是使用 keyCode (使用 e参数)。

我的意思是,用这个:

http://www.javascripter.net/faq/keycodes.htm

而且:

https://www.w3schools.com/jsreF/event_preventdefault.asp

这样的事情会很好:

&#13;
&#13;
    function keepFocus(e) {
        if(e.keyCode == 13)
             e.preventDefault();
}
&#13;
    <input type="text" keyup="keepFocus" />
 
&#13;
&#13;
&#13;

这样可以防止在按下回车键时失去焦点!

答案 2 :(得分:1)

有两种方法可以完成这项工作。

首先,当用户点击&#34;输入&#34;

时,将焦点重新输入到输入
<input type="text" onkeyup="keepFocus(event);" id="teste" />
function keepFocus(e) {
    if (e.key=="Enter") {
      var teste = document.getElementById ("teste");
      teste.focus ();
  }
}

其次,阻止文本字段的默认行为:

function keepFocus(e) {
   if (e.key=="Enter") {
     e.preventDefault ();
  }
}

我认为第二种方式更好,因为您不必在输入中添加ID。