jQuery技术:如果焦点不在提交按钮上,则表单不应在输入时提交

我有一个要求,即如果他按下回车键,用户就无法提交表格,除非重点放在提交按钮上。

使用下面的代码,我能够做到这一点,但现在的问题是,如果我有任何特定于任何字段的输入键事件(例如,如果我想将一个特殊要求的输入键事件附加到一个文本字段),它是因为我在下面写的脚本而不允许我..

 $(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(); } } });  

我可以限制用户在按下回车键时提交表单的任何解决方案,如果焦点不在提交按钮上,但同时如果任何表单字段附加任何回车键事件,那也应该有效。

    如果你创建了一个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; } } 

    删除行event.stopPropagation(); 从您的脚本中,您只需要preventDefault()(阻止提交)。

    当你执行stopPropagation()时,你将停止元素上的所有其他按键事件。

    试试看,看看它是否符合你的需求:

    –DEMO–

     $(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(); }); 

    也许我错过了这一点,这基本上是一个标准的HTML问题。

    不要给表单提交操作(直接将其移动到按钮上的单击事件)并将所有按钮类型更改为按钮而不是提交。

    我不记得是否只是从表单中删除提交就足够了。 如果没有那么只需执行onSubmit =“return false;” 我认为这样做。

    然而,作为一个说明,对全球行为的要求可能是错误的,如果它对政府而言,那么你可能会遇到麻烦,因为它不符合可访问性指南。

      以上就是jQuery教程分享如果焦点不在提交按钮上,则表单不应在输入时提交相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/jquerytutorial/524483.html

      (0)
      上一篇 2020年12月13日
      下一篇 2020年12月13日

      精彩推荐