Javascript 当焦点不在输入中时允许在输入时提交表单
我有一个表单,其中使用Javascript 当焦点不在输入中时允许在输入时提交表单,javascript,html,Javascript,Html,我有一个表单,其中使用tabindex=“0”有一个可聚焦的div。一切正常,除了可以在enter键上提交表单。当输入聚焦时,它确实工作,但当div聚焦时,它不工作 我知道我可以使用一些javascript来捕获enter键并提交最接近的表单,但是还有其他方法来克服这个问题吗 这里有一个小提琴来演示这个问题 好吧,您可以实际检查Enter键,而不是提交“最近的表单”,以查找该表单中的任何元素。我意识到这有点类似于您没有寻找的解决方案,但我不确定您是否意识到可以将按键事件与表单绑定在一起 请查看:
tabindex=“0”
有一个可聚焦的div
。一切正常,除了可以在enter
键上提交表单。当输入
聚焦时,它确实工作,但当div
聚焦时,它不工作
我知道我可以使用一些javascript来捕获enter
键并提交最接近的表单
,但是还有其他方法来克服这个问题吗
这里有一个小提琴来演示这个问题 好吧,您可以实际检查Enter键,而不是提交“最近的表单”,以查找该表单中的任何元素。我意识到这有点类似于您没有寻找的解决方案,但我不确定您是否意识到可以将按键事件与表单绑定在一起
请查看:
此事件仅在焦点位于窗体上时按下某个键时触发,因为keypress
事件仅绑定到选择器$(“窗体”)
。e.which==13
只是检查enter,特别是
当然,您可以将$(“表单”)
修改为任何选择器(例如,表单的
身份证、等级等)
EDIT:正如您所指出的,只需在表单上按enter键,就会导致需要使用它的元素出现问题,如textarea
。我已经使用事件委托在表单的所有子级上触发事件,除了textarea
让我知道它是如何工作的。好吧,您可以不提交“最近的表单”,而是检查该表单中的任何元素的Enter键。我意识到这有点类似于您没有寻找的解决方案,但我不确定您是否意识到可以将按键事件与表单绑定在一起
请查看:
此事件仅在焦点位于窗体上时按下某个键时触发,因为keypress
事件仅绑定到选择器$(“窗体”)
。e.which==13
只是检查enter,特别是
当然,您可以将$(“表单”)
修改为任何选择器(例如,表单的
身份证、等级等)
EDIT:正如您所指出的,只需在表单上按enter键,就会导致需要使用它的元素出现问题,如textarea
。我已经使用事件委托在表单的所有子级上触发事件,除了textarea
让我知道这是如何工作的。只需给表单起一个名字(例如id=“test
”),然后使用以下代码仅提交具有给定id的表单:
$(function(){
$("#test").keypress(function (e) {
if (e.keyCode == 13) {
alert('submitted');
return false
}
});
});
只需为表单指定一个名称(例如id=“test
”),然后使用以下代码仅提交具有给定id的表单:
$(function(){
$("#test").keypress(function (e) {
if (e.keyCode == 13) {
alert('submitted');
return false
}
});
});
严格来说,它不是有效的HTML,但它可以工作。。。您可以将div
放入
中,并删除按钮的默认样式。与给出的另一个答案一样,div
必须位于表单
中,以便在不添加脚本的情况下完成此工作。您也不再需要div上的tabindex
<form>
<input/>
<button type="submit">
<div>
</div>
</button>
</form>
严格来说,它不是有效的HTML,但它可以工作。。。您可以将div
放入
中,并删除按钮的默认样式。与给出的另一个答案一样,div
必须位于表单
中,以便在不添加脚本的情况下完成此工作。您也不再需要div上的tabindex
<form>
<input/>
<button type="submit">
<div>
</div>
</button>
</form>
请注意,e.keyCode
不能在所有浏览器中工作。在vanilla JS中,e.which
也不会,但是jQuery实际上标准化了e.which
,因此它可以在所有浏览器中工作。请注意,e.keyCode
不会在所有浏览器中工作。在vanilla JS中,e.which
也不会,但是jQuery实际上标准化了e.which
,因此它可以在所有浏览器中工作。谢谢你的想法,我知道直接绑定。另外,它不会干扰textarea
的回车键吗?非常正确,我没有意识到textarea
会牵涉其中,但我应该指出这一点。这个怎么样?谢谢你的想法,我知道直接绑定。另外,它不会干扰textarea
的回车键吗?非常正确,我没有意识到textarea
会牵涉其中,但我应该指出这一点。这个怎么样?谢谢你,好主意,虽然我不会应用它,但我想:)我宁愿使用javascript方法。不过,这是我想要的,所以我会接受你的回答。谢谢你,好主意,尽管我不会应用它,但我认为:)我宁愿使用javascript方法。然而,这是我所要求的,所以我会接受你的回答。