我们在做系统前端的时候,往往会用到form标签,采用jquery插件做表单验证。我们信誓旦旦的一位把一切都做好的时候,并且检查一遍又一遍的时候,意向不到的事情发生了,也许是出于一种意外,而这种意外我们从来没有想到,我们不小心碰下了enter键,然后我们发现该走的js它没有走,跳到下一个页面,或者就直接404了。想都不用想,绝对是enter键直接把表单提交了.表单在什么情况下会enter提交呢?我们如果不想表单通过enter键提交我们应该怎么做呢?

出现自动提交的情况,有两种可能:

1.是编写了javascript代码,当用户点按Enter键时,通过js事件侦听机制触发表单的提交。

2.是利用了浏览器的默认行为(至少发现ie是这样的)。浏览器在解析网页的时候,有许多默认的行为,例如如果一个页面上有表单和一个提交按钮,那么打开页面时,焦点会自动落在这个提交按钮上面。同样如果一个表单中只有一个单行文本输入域(text),那么在这个输入域中按Enter键时,浏览器会自动提交该表单。

对于第一种情况的话我们很好理解,我们可以通过下面的方法实现:

  1.  
    <pre class="html" name="code"> $(document).keyup(function(event){
  2.  
    if(event.keyCode ==13){
  3.  
    $("#submit").trigger("click");
  4.  
    }
  5.  
    });

但是对于第二种浏览器的默认行为,可能知道这一点的人就比较少了,有可能是浏览器在表单提交上的默认行为。
    
 这种情况一般都在什么时候发生呢,以ie为例,讲讲它在什么情况下会发生这样的现象
   
  1.  
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2.  
    <html>
  3.  
    <head>
  4.  
    <meta http-equiv="Content-Type" content="text/html; charset=GBK">
  5.  
    <title>submit例子 - aspxhome.com</title>
  6.  
    </head>
  7.  
    <body>
  8.  
    <h1>本demo演示在文本框中按enter键是否触发提交表单</h1>
  9.  
    <h2>默认情况下,一个文本框的时候,提交,不管按钮type是submit还是button</h2>
  10.  
    <form action="http://www.csdn.net">
  11.  
    <input type="text">
  12.  
    <input type="button" value="提交">
  13.  
    </form>
  14.  
    <h2>一个文本框的时候怎么才能做到不提交,方法是加一个隐藏掉的文本框</h2>
  15.  
    <form action="http://www.csdn.net">
  16.  
    <input type="text">
  17.  
    <input type="text" style="display:none">
  18.  
    <input type="button" value="提交">
  19.  
    </form>
  20.  
    <h2>只要有type为submit的按钮存在,一个文本框还是多个文本框都提交</h2>
  21.  
    <form action="http://www.csdn.net">
  22.  
    <input type="text">
  23.  
    <input type="submit" value="提交">
  24.  
    </form>
  25.  
    <h2>只要有type为submit的按钮存在,一个文本框还是多个文本框都提交</h2>
  26.  
    <form action="http://www.csdn.net">
  27.  
    <input type="text">
  28.  
    <input type="text">
  29.  
    <input type="submit" value="提交">
  30.  
    </form>
  31.  
    <h2>多个文本框的时候,不提交,用type为button的按钮就行啦</h2>
  32.  
    <form action="http://www.csdn.net">
  33.  
    <input type="text">
  34.  
    <input type="text">
  35.  
    <input type="button" value="提交">
  36.  
    </form>
  37.  
    <h2>用button元素时,FX和IE下有不同的表现</h2>
  38.  
    <form action="http://www.csdn.net">
  39.  
    <input type="text">
  40.  
    <input type="text">
  41.  
    <button>提交</button>
  42.  
    </form>
  43.  
    <h2>radio和checkbox在FX下也会触发提交表单,在IE下不会</h2>
  44.  
    <form action="http://www.csdn.net">
  45.  
    <input type="text">
  46.  
    <input type="radio" name="a">
  47.  
    <input type="checkbox" name="b">
  48.  
    <input type="checkbox" name="c">
  49.  
    <input type="button" value="提交">
  50.  
    </form>
  51.  
    <h2>type为image的按钮,等同于type为submit的效果</h2>
  52.  
    <form action="http://www.csdn.net">
  53.  
    <input type="text">
  54.  
    <input type="text">
  55.  
    <input type="image" src="/images/logo.gif">
  56.  
    </form>
  57.  
    </body>
  58.  
    </html>

我们知道了Enter键提交的原理之后我们很明显就有了相对应的解决方法

通常我们用的方法有两种:
1.我们在form标签中来禁止enter键提交
<form name="form" action="" method="post" onkeydown="if(event.keyCode==13)return false;" onSubmit="return checkSubmit();"> 
2.我们可以在form中增加一个隐藏的输入框
<span class="tag"><</span><span class="tag-name">input</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"text"</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"notautosubmit"</span><span>  </span><span class="attribute">style</span><span>=</span><span class="attribute-value">"display:none"</span><span class="tag">/></span>
<span class="tag">其次我们可以在type = "test" 中增加onkeypress="javascript:return gosearch();"方法</span>
  1.  
    <span class="tag"></span>function gosearch() {
  2.  
    if(window.event.keyCode == 13) {
  3.  
    search();
  4.  
    return false;
  5.  
    }
  6.  
    }
希望对你们有帮助,顺便说一下,这个编辑器太恶心了,每次都得害我丢失内容,乱加东西,并且一点也不好用。
 

谈谈Enter回车键提交表单那些事 回车搜索 enter搜索的更多相关文章

  1. js防止回车(enter)键提交表单及javascript中event.keycode

      如何防止回车(enter)键提交表单,其实很简单,就一句话.onkeydown="if(event.keyCode==13)return false;"把这句写在from标签里 ...

  2. 输入框状态禁止enter键提交表单

    1:页面中如果存在input输入框和submit提交按钮时,默认按enter键会提交表单,如果我现在在做查询操作,一不小心按了enter键就会有提交表单的操作,这样显然是不合理的,所以我们要禁止按en ...

  3. 简单Demo的用户登录JSP界面IE、Firefox(chrome) Enter 键提交表单

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  4. [JS] 页面回车键提交表单-常用于登录页面

    //判断是否按下了回车键 var EnterSubmit = function(evt){ evt= window.event || evt; if (evt.keyCode == 13){ //若按 ...

  5. javascript 按ctrl和enter键提交表单

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  6. Enter键提交表单

    input type="submit"在360浏览器上不能提交   用了这个 <input type="button" class="btn b ...

  7. jQuery回车键提交表单

    $(document).keyup(function(event) {     if(event.keyCode==13)     {         $('btnSubmit').trigger(& ...

  8. js按Enter键提交表单

    function exprint(e){ /* var keycode = event.keyCode; if (keycode == "13"){ fm.UserCode.foc ...

  9. javascript —— 禁止通过 Enter 键提交表单

    $('btn').on('keydown', function () { return false; })

随机推荐

  1. java文件压缩与解压

    感谢“zlex.dongliang@gmail.com”.主要代码如下: import java.io.BufferedInputStream; import java.io.File; import ...

  2. 用scrapy爬取京东的数据

    本文目的是使用scrapy爬取京东上所有的手机数据,并将数据保存到MongoDB中. 一.项目介绍 主要目标 1.使用scrapy爬取京东上所有的手机数据 2.将爬取的数据存储到MongoDB 环境 ...

  3. Redis高可用集群-哨兵模式(Redis-Sentinel)搭建配置教程【Windows环境】

    No cross,no crown . 不经历风雨,怎么见彩虹. Redis哨兵模式,用现在流行的话可以说就是一个"哨兵机器人",给"哨兵机器人"进行相应的配置 ...

  4. JAVAEE——SpringBoot入门:简介、微服务、环境准备、helloworld与探究、快速构建项目

    一.Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 2014,m ...

  5. IdentityServer4系列之中文文档及实际项目经验分享

    0.前言 原文:http://docs.identityserver.io/en/release/声明: 1.目录一至五章节根据IdentityServer英文文档翻译而来,有些内容会根据自己的理解来 ...

  6. zoj 3644 记忆化搜索

    题目:给出一个有向图,从1到n,每个结点有个权值,每走一步,分值为结点权值的LCM,而且每一步的LCM都要有变化,问到达N的时候分值恰好为K的路径有多少条 记忆化搜索,虽然做过很多了,但是一直比较慢, ...

  7. javaSrript_数据类型(2017-03-15)

    一.综述 javaScript中的数据类型分为两类: 基本类型: undefined:未定义.当声明变量却没有赋值时会显示该值.可以为变量赋值为undefined null:空.无.表示不存在,当为对 ...

  8. 【BZOJ-4408】神秘数 可持久化线段树

    4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 475  Solved: 287[Submit][Status ...

  9. 一、java概述

    一.概述 java不仅仅是一门编程语言,还是一个由一系列计算机软件和规范形成的技术体系. 提供了完整的开发和跨平台部署的支持环境.用途广泛.     结构严谨.面向对象.摆脱硬件平台的束缚.     ...

  10. VIM简单配置(windows)

    set number set history=1000000 set tabstop=4 set shiftwidth=4 set smarttab set nocp filetype plugin ...