我正在尝试创建一个提交按钮,该按钮将在用户按下回车键时提交。
我必须先单击“提交”按钮,然后才能使用“输入”按钮作为“虚拟点击”。
如果我尝试使用回车键直接提交,它就不会这样做,第一次按下必须使用鼠标。 是什么导致了这个错误?
$("#guessSubmit").keydown(function(event){
if(event.keyCode == 13){
$("#guessSubmit").click();
}
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="submit" id="guessSubmit" onclick=alert("test")>
&#13;
答案 0 :(得分:2)
您不应该在按钮上添加按键,而是在正文或窗口上添加按键。
$(document.body).keydown(function(event){
if(event.keyCode == 13){
$("#guessSubmit").click();
}
});
答案 1 :(得分:1)
您可以使用autofocus
属性:
$("#guessSubmit").keydown(function(event){
if(event.keyCode == 13){
$("#guessSubmit").click();
return false;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="submit" id="guessSubmit" onclick='alert("test")' autofocus>
答案 2 :(得分:1)
该按钮仅在焦点处于关键状态时才会收到关键事件。您可以通过编程方式设置焦点:
$("#guessSubmit").focus();
更新:但是有更好的方法来处理13键:将按钮放在一个表单中。只要按下回车键并且焦点位于表单中的任何输入元素,表单就会被提交: HTML:
<form id="myform">
<input type="text" name="text" autofocus />
<input type="submit" id="guessSubmit" />
</form>
JavaScript的:
$("#myform").on("submit", function(e) {
e.stopPropagation();
e.preventDefault();
alert("test");
});
请参阅此处的小提琴:http://jsfiddle.net/robbyn/62vnrcde/
答案 3 :(得分:0)
我有一个非常类似的问题,它与焦点有关。 我不得不将当前焦点设置为元素。它适用于鼠标,因为它设置了焦点。
这是更新的代码
//Submits if enter key is pressed
$("#guessSubmit").keydown(function(event){
if(event.keyCode == 13){
$("#guessSubmit").click();
event.preventDefault();
}
});
$("#guessSubmit").focus();
答案 4 :(得分:0)
如果强行关注按钮,它应该有效吗?
$("#guessSubmit").focus().keydown(function(event){
if(event.keyCode == 13){
$("#guessSubmit").click();
}
});
答案 5 :(得分:0)
您必须检查文档点击上的键码,如下所示:
$(document).keypress(function(event){
if(event.keyCode === 13){
$("#guessSubmit").click();
}
});
检查Fiddle.