我有一个表单,我可以使用div
来关注tabindex="0"
。除了可以在form
密钥上提交enter
之外,一切正常。它在input
聚焦时起作用,但在div
具有焦点时却不起作用。
我知道我可以使用一些JavaScript来捕获enter
密钥并提交最接近的form
,但还有其他方法可以解决这个问题吗?
这是一个证明问题的小提琴。 https://jsfiddle.net/ajqfm3Lb/1/
答案 0 :(得分:2)
好吧,您可以实际检查表单中的任何元素的Enter按键,而不是提交"最接近的表单"我意识到这有点类似于你没有寻找的解决方案,但是我不确定你是否意识到你可以将那个按键事件与形式。
检查出来:
https://jsfiddle.net/ajqfm3Lb/9/
$("form").on("keypress", "*:not(textarea)", function(e) {
if (e.which == 13) {
alert("submitted");
return false;
}
});
此事件仅在焦点位于表单上时按键时触发,因为keypress
事件仅与选择器$("form")
相关联。 e.which == 13
只是检查输入,具体而言。
当然,您可以将$("form")
修改为任何选择器(例如,表单' s
ID,班级等。)
编辑:正如您所指出的,只需听取"输入"按下表单会导致需要使用它的元素出现问题,例如textarea
。我已经使用事件委派来触发 textarea
以外的所有形式的孩子的事件。
让我知道这是如何运作的。
答案 1 :(得分:1)
严格来说,它不是有效的HTML,但它有效...您可以将div
置于<button type="submit">
内并删除按钮的默认样式。与给出的其他答案一样,div
必须在form
内部才能完成这项工作,而无需额外的JavScript。您也不再需要div上的tabindex。
<form>
<input/>
<button type="submit">
<div>
</div>
</button>
</form>
和
button[type="submit"] {
border: none;
background: none;
padding: 0;
margin: 0;
display: block;
}
答案 2 :(得分:0)
只需为表单命名(例如id="test
“),然后使用以下代码仅提交具有给定ID的表单:
$(function(){
$("#test").keypress(function (e) {
if (e.keyCode == 13) {
alert('submitted');
return false
}
});
});