我有一个要求,即如果他按下回车键,用户就无法提交表格,除非将焦点放在提交按钮上。
使用以下代码,我能够做到这一点,但现在的问题是,如果我有任何特定于任何字段的输入键事件(例如,如果我想将一个特定要求的输入键事件附加到一个文本字段) ,由于我在下面写的脚本,它不允许我。
<script>
$(document).keydown(function(event) {
if (event.keyCode == 13) {
var $focusedItem = $(document.activeElement);
if($focusedItem.is("button") || $focusedItem.is("a") || $focusedItem.attr("type") == "submit") {
$focusedItem.click();
}
else {
event.preventDefault();
}
}
});
</script>
我可以限制用户在按下回车键时提交表单的任何解决方案,如果焦点不在提交按钮上,但同时如果任何表单字段附加任何回车键事件,那也应该有效
答案 0 :(得分:0)
如果您创建了一个JsFiddle,它将更容易提供帮助。但是,我认为你应该这样做:
if($focusedItem.attr('id') == 'submitButton') {
if (event.keyCode == 13) {
submit the form
}
}else if ($focusedItem.attr('id') == 'Anothertextarea') {
if (event.keyCode == 13) {
do something special
}
}else{
if (event.keyCode == 13) {
return null;
}
}
答案 1 :(得分:0)
试一试,看看它是否符合您的需求:
$(document).on('submit', 'form', function (e) {
e.preventDefault();
}).on('click', ':submit', function (e) {
if (!$(document.activeElement).is(':submit')) return;
var form = $(this).closest('form').length ? $(this).closest('form')[0] : $('#' + $(this).attr('form'))[0];
form.submit();
});
答案 2 :(得分:0)
删除行event.stopPropagation();从你的脚本中,你只需要preventDefault()(阻止提交)。
当你执行stopPropagation()时,你将停止元素上的所有其他按键事件。
答案 3 :(得分:0)
也许我错过了这一点,这基本上是一个标准的HTML问题。
不要给表单提交操作(直接将其移动到按钮上的点击事件)并将所有按钮类型更改为按钮而不是提交。
我不记得是否只是从表单中删除提交就足够了。如果没有那么只需执行onSubmit =&#34; return false;&#34;我认为就是这样。
然而,作为一个说明,对全球行为的要求可能是错误的,如果它对政府来说那么你可能会遇到麻烦,因为它不符合可访问性指南。