公司测试提了一个项目后台在IE浏览器下(360,firefox就没问题)出现数据重复的问题,调试了好久终于发现问题所在,也不知道是谁写的代码,醉醉的。。。。

错误地点:

<input type="submit" value="提交"  class="btn"  id="formSubmit" onclick="checkForm()"  />

type类型写成submit,而在checkForm中也进行了form提交。

type=“button”和type="submit"在IE firefox 360下分别进行submit()提交和走ajax测试:

测试代码:

<body>
<form id="form1" method="get" >
<input name="username" value="zhangsan" /><br>
<input name="age" value="20" /><br>
<input name="address" value="beijing" /><br>
<input name="birthday" value="10-12" /><br>
<input name="contactInfo.tel" value="13321464327" /><br>
<input name="contactInfo.address" value="hebei" /><br>
<input id="subbutton" type="submit" value="submit" onclick=""/>
<!-- <input id="subbutton" type="button" value="submit" onclick="submit();"/> -->
</form>
<script type="text/javascript" src="jquery-1.8.3.js"></script>
<script type="text/javascript">
$(document).ready(function() { $("#subbutton").click(function() {
$.ajax({
type : "POST",
url : "queryItems.action?name='xuhui'",
data : $("#form1").serialize(),
async : false,
dataType : "json",
success : function(data) { }
});
}); // function submit(){
// $("#form1").submit();
// }
});
</script>
</body>

测试结果:

type=“submit”

普通submit:

IE        提交form  two
firefox  提交form  one
360     提交form   one

ajaxsubmit:

IE                     two
firefox               two
360                   two

type="button"

普通submit:
IE                    one
firefox              one
360                  one

ajaxsubmit:

IE                   one
firefox             one
360                 one

结果分析:

type=button      就单纯是按钮功能   
type=submit      是发送表单

但是对于从事WEB UI的人应该要注意到,使用submit来提高页面易用性:
使用submit后,页面支持键盘enter键操作,而很多WEB软件设计师,可能没有注意到submit统一.

用button后往往页面不支持enter键了。所以需要支持enter键,必须要设置个submit,默认enter键对页面第一个submit进行操作。

<input type="submit" name="submit" value="提交"     onClick="submit()">
执行完onClick,转到action。可以自动提交不需要在onClick中进行提交。所以说onclick这里可以不要。

这里就可以解释为什么上面会出现重复提交了,但是重复提交情况只会在IE浏览器中,firefox 和360就没有,猜想应该是对form提交进行了优化。

<input type="button" name="button" value="提交"     onClick="submit()">
执行完onClick,跳转文件在 js文件里控制。提交需要onClick。

学习过程中的bug记录。。。


-END-

form表单重复提交,type=“button”和type=“submit”区别的更多相关文章

  1. JavaWeb学习总结(十一):Session解决form表单重复提交

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...

  2. js阻止form表单重复提交

    防止表单重复提交的方法总体来说有两种,一种是在js中阻止重复提交:另一种是在后台利用token令牌实现,大致思路是生成一个随机码放到session和form表单的隐藏输入框中,提交表单时两者对比,表单 ...

  3. php 解决和避免form表单重复提交的方法

    在提交表单的时候,可能遇到网速等导致页面突然加载变慢,用户重复地点击提交按钮,将在数据库产生多条数据,导致不可控情况. 比如下面的情况就会导致表单重复提交: 点击提交按钮两次. 点击刷新按钮. 使用浏 ...

  4. easyUI的form表单重复提交处理

    1. 问题 生产环境出现过新增用户提交, 入库两条重复数据的情况; 但是我查看代码, 页面做了校验, 后台插入数据也做了校验;  出现这种几率的事件的非常小的, 但是还是会碰到, 客户会对我们的产品产 ...

  5. java web学习总结(十三) -------------------使用Session防止表单重复提交

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...

  6. JavaWeb防止表单重复提交(转载)

    转载自:http://blog.csdn.net/ye1992/article/details/42873219 在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用 ...

  7. JavaWeb---总结(十三)使用Session防止表单重复提交

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...

  8. [Java拾遗五]使用Session防止表单重复提交

    申明:此文章属于转载, 转自博客: http://www.cnblogs.com/xdp-gacl/p/3859416.html在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没 ...

  9. java web 学习十三(使用session防止表单重复提交)

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...

随机推荐

  1. W5500问题集锦(一)

    在"WIZnet杯"以太网技术竞赛中,有非常多參赛者在使用中对W5500有各种各样的疑问,对于这款WIZnet新推出的以太网芯片,使用中大家是不是也一样存在下面问题呢?来看一看: ...

  2. Docker运行 Mono

    Docker运行 Mono Docker 是最近相当热门的一个名词,它是一个基于 Linux Container 的轻量化的虚拟技术,而微软也相当积极与 Docker 合作,在 Azure 上支持这个 ...

  3. 推荐两个针对github的chrome插件

    作为一只程序猿,在github上找代码.看代码是再正常不过的事情了.这时候有个工具可以方便你翻看代码,想必是极好的. Sourcegraph for GitHub 这个插件允许你像使用IDE那样浏览代 ...

  4. jQuery EasyUI API - Layout - Layout[原创汉化官方API]

    最近在学习jQuery EasyUI,发现中文的文档好少,部分文档不错但它是鸟语的,为了大家也为了自己学习吧,汉化做一下笔记. 有没有说清楚的,或者翻译不正确的地方还请大家谅解指出.. 由于工作时间原 ...

  5. [译]JVM运行时数据区

    (本篇文章翻译自JVM Run-Time Data Areas) 这是我阅读JVM规范的笔记,而且我画了一个图来帮助我理解. 1.每一个单独的线程(非共享的)的数据区 针对每一个单独的线程的数据区包括 ...

  6. leetcode第33题--Search for a Range

    Given a sorted array of integers, find the starting and ending position of a given target value. You ...

  7. Asp.Net MVC页面静态化功能实现一:利用IHttpModule,摒弃ResultFilter

    上一篇有提到利用IHttpModule和ResultFilter实现页面静态化功能.后来经过一些改动,将ResultFilter中要实现的功能全部转移到IHttpModule中来实现 Asp.Net ...

  8. ps入门教程:画笔工具、铅笔工具、渐变工具等的使用

    本节课程主要内容:学习画笔工具.铅笔工具.颜色替换工具.历史记录画笔工具.历史记录艺术画笔工具.渐变工具和油漆桶 工具的应用.------------------------------------- ...

  9. windows下grunt安装提示不成功

    在电脑按了node.js之后,在cmd中 输入 npm install -g grunt-cli 注意啦 不是 npm install -g grunt-cli 中间多了一个空格就安装不成功了,这个空 ...

  10. windows 8以上找回开始菜单

    步骤如下: 右击任务栏,选择工具栏——新建工具 在工具栏---新建工具栏的输入框中输入,”C:\ProgramData\Microsoft\Windows\Start Menu\Programs,然后 ...