简单我有这个HTML文档
<input type="text" id="my_txt" onkeypress="move_focus(event)"/>
<br>
<input type="button" id="my_btn" />
<script >
function move_focus(e)
{
if (e.keyCode==13) $("#my_btn").focus();
}
</script>
我想要的是:
在输入文本my_txt
的按键事件上,如果按下的键为ENTER
键,则将焦点移至my_btn
按钮。
我按照上面的但进行了操作,当按下Enter键时没有任何操作。
我在这个网络上发现了不止一篇关于这个主题的帖子,但是大多数答案都很复杂,而且有些我不在乎我的需要。
请帮助!..提前致谢。
答案 0 :(得分:3)
Keynumber 13是一个默认用于接受事物(https://api.jquery.com/event.preventdefault/)的键,所以基本上你必须用它来覆盖它:
e.preventDefault();
整个代码
<input type="text" id="my_txt" onkeypress="move_focus(event)"/>
<br>
<input type="button" id="my_btn" />
<script >
function move_focus(e)
{
e.preventDefault();
if (e.keyCode==13) $("#my_btn").focus();
}
</script>
答案 1 :(得分:1)
对此的重要部分是使用bind。 Bind创建一个新函数,将this
(this)设置为传递给bind()的第一个参数。
因此,当我们编写$('#my_txt').bind("enterKey")
时,它实际上将#my_txt
和事件enterKey
映射到函数将执行的相同上下文中。所以每次我们按下input
元素内的一个键时标识#mytxt
,当我们释放密钥时,它会检查按下的密钥是否为Enter Key
,这是由$('#my_txt').keyup(e)
对象作为参数的行keypress
提供的。此活动将是move_focus = function move_focus(e) {
$('#my_txt').bind("enterKey",function(e){
$("#my_btn").focus();
//disable to prevent multiple enter
$(this).attr("disabled", "disabled")
});
$('#my_txt').keyup(function(e){
if(e.keyCode == 13) //checks if the event object is a Enter Key or not
{
$(this).trigger("enterKey"); //explicitly triggers enterkey event with whom #my_txt is bound to
}
});
}
活动。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="my_txt" onkeypress="move_focus(event)"/>
<br/>
<input type="button" id="my_btn" value="button" />
{{1}}
答案 2 :(得分:0)
试试这个使用jQuery的例子:
$( "#my_txt" ).keypress(function(event) {
var keycode = (event.keyCode ? event.keyCode : event.which);
if(keycode == '13'){
$( "#my_btn" ).focus();
}
});
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<body>
<input type="text" id="my_txt"/><br>
<input type="button" id="my_btn" value="Button" />
</body>
答案 3 :(得分:-2)
而不是使用:
$("#my_btn").focus();
请使用:
document.getElementById("my_btn").focus();