您现在的位置: 爱51代码网 >> 范文 >> 文章正文
js防止重复提交表单代码

js防止重复提交表单代码

防止重复提交表单,我有两种方案,但两种方案都有一个小问题。
方案一:在表单的提交事件中,显示一个遮罩层顺便应用提交按钮,代码如下:

JavaScript code?$(document).ready(function(){     $("form").bind("submit",function(){         $('<div id="unloadMask"></div>').appendTo('body').height($("body").height());         $("p.btn input").attr("disabled","disabled");     }); });

但有个问题,我用的是ASP.NET MVC,并使用了MVC自带的表单验证功能,现在提交表单时,如果的客户端的数据验证没有通过,表单就不会提交,但自定义这个事件里的代码还是要执行,也就是说,表单没提交,但还是产生了遮罩层和禁用了按钮,我想在表单提交时,判断一下,只有当客户端数据验证都通过后,才执行里面的代码。

方案二:提交表单,意味着就要离开当前页面,所以我打算在页面离开前事件(onbeforeunload )中,显示一个遮罩层,顺便把表单提交按钮也disabled,来防止表单重复提交,代码如下:

JavaScript code?$(document).ready(function(){     $(window).bind("beforeunload",function(){         $('<div id="unloadMask"></div>').appendTo('body').height($("body").height());         $("p.btn input").attr("disabled","disabled");     }); });

但有个问题,在IE中,如果页面中有href为javascript:void(0)的超链接,在点击后,也会触发这个事件,而href="#111"这样的超链接就不会触发,而这些超链接又是由EasyUI动态生成的,虽然可以用程序批量把javascript:void(0)替换为#111,但我在考虑有没有更好的办法,比如:在触发beforeunload事件时,判断之前是提交的表单,还是点了某个超链接,只有刚才是提交了表单,才产生遮罩层。

是基于jquery.validate么?那好说!

JavaScript code?$("form").valid(); //true or false $("form input[name=something]").valid(); //true or false


jquery.validate扩充了valid方法,可以用来判断form表单或者某个字段是否通过验证

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    lotus数据列表文档个数如何实时统
    lotus代理中LS如何将字符串保存到
    在lotus BS系统里怎样方便实现统
    undefined reference timer_crea
    linux文件/usr/lib破坏了,还原后
    linux上运行system函数时,print
    Failed to open eth0
    android手机无法与eclipse或电脑
    C/C++洗牌算法源代码
    servlet技术实现用户名唯一的验证
    undefined reference timer_crea
    Failed to open eth0
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    sharepoint 2010 获取用户信息Us
    mysql主从同步延迟方案解决的学习
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    IE浏览器中window.opener.lo
    在aspx中怎么调用 asp文
    html+js+ajax 注册登陆不需要
    chrome下,img标签的图片显示
    如何做到禁止用户下载挂在网
    js如何阻止checkbox点击事件
    用knockout实现viewmodel后,
    jqGrid里的图标显示不出来
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |