`
rmzdb
  • 浏览: 81668 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

【原】Enter键表单自动提交问题

阅读更多

       最近做了一个系统,重新搭建了前端,采用jquery validate插件做表单验证。一切都进行的非常顺利。可是恶心的事情发生了,为了配套校验机制,在弹出框的搜索条件页,也用了form标签,仅仅是为了表单验证方便。但是当只有一个查询条件(text文本输入框)的时候,却发现只要输入条件按enter键,页面立马就跳转了,而且跳转的路径很奇怪,然后就出现404错误。

       凭借直觉,不用说,就是enter键触发了表单提交。但是当前业务这样的表单,只是方便做校验,并非要与后台通信的。一番搜索,问题如下:

 

出现自动提交的情况,有两种可能:
一 、编写了javascript代码,当用户点按Enter键时,通过js事件侦听机制触发表单的提交。
二 、利用了浏览器的默认行为(至少发现ie是这样的)。浏览器在解析网页的时候,有许多默认的行为,例如如果一个页面上有表单和一个提交按钮,那么打开页面时,焦点会自动落在这个提交按钮上面。同样如果一个表单中只有一个单行文本输入域(text),那么在这个输入域中按Enter键时,浏览器会自动提交该表单。


我们对于第一种情况一般都知道而且很容易理解,但是对于第二种浏览器的默认行为,可能知道这一点的人就比较少了,下面我具体看一下浏览器(至少ie如此)在表单提交上的默认行为。
如果表单中含有一个单行文本输入域,那么无论含有多少其他类型的表单组件,那么在该输入域中点击Enter时,表单会自动提交。例如下面的代码:

<form action="" method="post">
     <input type="text"  name="sdfsdf"  />
      <textarea</textarea>
      <input type="checkbox"  name='' />
      <input type="hidden"name="aa" value=''  />
</form


解决的办法很简单,只要再添加一个文本输入框就可以了,可能你会说,为了不自动提交就要增加一个没有用的输入框,而且中含有两个输入框最终用户会接受吗? 其实可以解决,你可以将那个新添加的输入框通过style 隐藏即可,例如:

<form action="" method="post">
    <input type="text" name="notautosubmit"  style="display:none"/>
    <input type="text" name="username"/>
</form>

 
还有一个方法可以监听键盘按键,如果是keyCode=13,则选择性过滤事件的响应即可。

 

document.onkeypress = function(){
    if(event.keyCode == 13) 
   {
         return  false;
   }
}

 

 

分享到:
评论

相关推荐

    禁用Enter键表单自动提交实现代码

    本文将详细介绍如何通过JavaScript代码来禁用Enter键触发的表单自动提交功能。 首先,我们需要了解事件处理程序在JavaScript中的工作原理。事件是用户与网页交互时发生的动作,如点击、滚动或键盘按键等。我们可以...

    jQuery Ctrl+Enter提交表单

    // 阻止默认的Enter键行为(防止表单自动提交) submitForm(); // 调用自定义的提交函数 } }); function submitForm() { // 这里可以添加验证逻辑,比如检查输入非空等 var content = $('#inputArea').val()...

    Ctrl+Enter键按钮提交表单代码.zip

    总之,"Ctrl+Enter键按钮提交表单代码"是一个关于前端交互优化的实例,通过JavaScript或jQuery监听键盘事件,实现了用户按下Ctrl+Enter时自动提交表单的功能,提升了用户体验。在实际项目中,可以根据需求进行调整和...

    如何防止INPUT按回车自动提交表单FORM

    默认情况下,当用户在表单内的输入框(INPUT)中按下回车键时,浏览器会自动提交表单,这有时并不符合开发者的设计需求。本文将详细介绍两种防止INPUT按回车自动提交表单FORM的方法。 ### 方法一:增加一个隐藏的...

    禁止按回车键提交表单的方法

    同样如果一个表单中只有一个单行文本输入域(text),那么在这个输入域中按Enter键时,浏览器会自动提交该表单。 我们对于第一种情况一般都知道而且很容易理解,但是对于第二种浏览器的默认行为,可能知道这一点的人...

    按回车表单自动提交问题意外发现

    这样,即使表单中只有一个可见的输入框,按下回车键时,浏览器会识别到还有其他表单控件存在,因此不会触发表单的自动提交行为。 最后,需要注意的是,在一些表单设计中,可能会使用JavaScript来控制表单的提交过程...

    enter键控制input光标移动到下一个框

    在网页设计中,用户与页面交互的一个常见行为是使用键盘进行导航,特别是使用"Enter"键来提交表单或在多个输入框之间切换。本文将深入探讨如何利用HTML和jQuery实现"Enter"键控制input光标移动的功能,使得用户在按...

    jsp中如何实现按下回车键自动提交表单

    总结来说,通过JavaScript(或者使用库如jQuery)监听键盘事件,检查回车键的按键码,并在检测到回车键被按下时触发表单的提交,可以在JSP中实现按下回车键自动提交表单的功能。这样,用户无需手动点击提交按钮,只...

    IE 下Enter提交表单存在重复提交问题的解决方法

    在网页开发中,表单提交是用户与服务器交互的关键环节,而在Internet Explorer(IE)浏览器中,使用Enter键提交表单时可能会遇到一个常见的问题——重复提交。这可能导致数据库中的数据异常,对业务逻辑造成影响。...

    JSP中的FORM表单中只有一个input文本时,按回车键将会自动提交表单

    -- 解决form表单在只有一个input输入框时回车会自动提交表单 --&gt; ``` 此外,还可以通过JavaScript绑定事件来避免这种情况。例如,可以监听键盘按键事件,当用户按下回车键时,执行特定的函数,阻止表单的默认...

    javascript 回车键触发表单提交的问题

    以下是关于JavaScript如何控制回车键触发表单提交问题的相关知识点: 1. 回车键提交表单的默认行为: - 在大多数浏览器中,如果用户在一个文本输入框(input type="text")内按下回车键,并且表单中存在type为...

    ASP.NET基于Ajax的Enter键提交问题分析

    本文将深入探讨ASP.NET中基于Ajax的Enter键提交问题,并提供解决方案。 首先,让我们回顾HTML表单(form)对Enter键的响应机制。在不同的浏览器中,Enter键的行为可能有所不同。以IE7为例: 1. 如果HTML form只有...

    控制TAB及ENTER键在子窗体中的行为1.0

    默认情况下,当用户按下Tab键时,焦点会按照窗体内的控件顺序移动,而Enter键通常用于触发当前控件的默认动作,如提交表单或执行按钮命令。然而,在有子窗体的情况下,如果希望焦点仅在子窗体内部循环,或者在主窗体...

    (js)按下enter键执行函数

    例如,当用户在一个文本输入框中按下“Enter”键时,默认行为通常是提交表单或换行。通过返回`false`可以阻止这些默认动作发生。 #### 扩展知识点 1. **事件冒泡与捕获**:在DOM模型中,事件可以沿着元素层级传播...

    点击回车提交表单,应用Java技术实现。

    在这个例子中,我们利用JavaScript来监听键盘事件,并在用户按下Enter键时自动提交表单。 ```javascript document.onkeydown = function (evt) { var evt = window.event ? window.event : evt; // 兼容IE和其他...

    ie ,火狐 文本框回车自动提交

    在网页开发过程中,一个常见的需求是当用户在文本框中按下回车键时,自动...总之,通过合理利用HTML、CSS和JavaScript,我们可以有效地解决在不同浏览器中实现文本框回车自动提交的问题,为用户提供无缝的交互体验。

    表单的焦点顺序tabindex和对应enter键提交

    总结来说,理解并合理运用`tabindex`、`onsubmit`和`enter`键提交,以及JavaScript的焦点管理,能够帮助开发者创建更符合用户习惯、易于使用的网页表单。这不仅提升了用户体验,也使得表单数据的验证和处理更加高效...

Global site tag (gtag.js) - Google Analytics