阻止form表单提交的问题
阻止form表单提交这种场景可能在生活中,我们经常碰到,而在我们第一印象里面可能我们用return false 去阻止表单默认行为。
但是,有中情况我们用return false 不能阻止表单提交
<div class="warp">
<h2>登录到pfan空间</h2>
<p>这里有更多的知识分享,交流。</p>
<form action="/register" method = "post" >
<input type="text" name = "username" placeholder = "请输入注册用户名"> <br />
<input type="password" name = "pwd" placeholder = "请输入初始密码"> <br />
<input type="password" name = "aginpwd" placeholder = "请再次输入密码"> <br />
<input type="submit" value ="注册" class="login_btn">
</form>
</div>
<script>
var form = document.forms[],
submit = document.querySelector(".login_btn"),
inputBtn = document.getElementsByTagName("input");
console.log(form);
form.addEventListener("submit",function(){
if(inputBtn[].value == ""){
alert("请您认真填写注册用户名!");
return false;
}else if(inputBtn[].value == ""){
alert("请您认真输入初始密码!");
return false;
}else if(inputBtn[].value == ""){
alert("请您再次输入密码");
return false;
}else if(inputBtn[].value != inputBtn[].value){
alert("两次密码输入不匹配,请更正!");
return false;
}
},false); </script>
以上代码我们看着,好像没有错误,但是,表单依然可以提交,测试环境chrome。
但是我们将return false 改成用 e.preventDefault(),却可以达到阻止表单提交的效果:
<div class="warp">
<h2>登录到pfan空间</h2>
<p>这里有更多的知识分享,交流。</p>
<form action="/register" method = "post" >
<input type="text" name = "username" placeholder = "请输入注册用户名"> <br />
<input type="password" name = "pwd" placeholder = "请输入初始密码"> <br />
<input type="password" name = "aginpwd" placeholder = "请再次输入密码"> <br />
<input type="submit" value ="注册" class="login_btn">
</form>
</div>
<script>
var form = document.forms[],
submit = document.querySelector(".login_btn"),
inputBtn = document.getElementsByTagName("input");
console.log(form);
form.addEventListener("submit",function(e){
if(inputBtn[].value == ""){
alert("请您认真填写注册用户名!");
e.preventDefault();
}else if(inputBtn[].value == ""){
alert("请您认真输入初始密码!");
e.preventDefault();
}else if(inputBtn[].value == ""){
alert("请您再次输入密码");
e.preventDefault();
}else if(inputBtn[].value != inputBtn[].value){
alert("两次密码输入不匹配,请更正!");
e.preventDefault();
}
},false); </script>
另一种就是将其改成用onsubmit:
<div class="warp">
<h2>登录到pfan空间</h2>
<p>这里有更多的知识分享,交流。</p>
<form action="/register" method = "post" >
<input type="text" name = "username" placeholder = "请输入注册用户名"> <br />
<input type="password" name = "pwd" placeholder = "请输入初始密码"> <br />
<input type="password" name = "aginpwd" placeholder = "请再次输入密码"> <br />
<input type="submit" value ="注册" class="login_btn">
</form>
</div>
<script>
var form = document.forms[],
submit = document.querySelector(".login_btn"),
inputBtn = document.getElementsByTagName("input");
console.log(form);
form.onsubmit = function(){
if(inputBtn[].value == ""){
alert("请您认真填写注册用户名!");
return false;
}else if(inputBtn[].value == ""){
alert("请您认真输入初始密码!");
return false;
}else if(inputBtn[].value == ""){
alert("请您再次输入密码");
return false;
}else if(inputBtn[].value != inputBtn[].value){
alert("两次密码输入不匹配,请更正!");
return false;
} }
</script>
参考资料
http://stackoverflow.com/questions/4924036/return-false-on-addeventlistener-submit-still-submits-the-form
阻止form表单提交的问题的更多相关文章
- js阻止form表单重复提交
防止表单重复提交的方法总体来说有两种,一种是在js中阻止重复提交:另一种是在后台利用token令牌实现,大致思路是生成一个随机码放到session和form表单的隐藏输入框中,提交表单时两者对比,表单 ...
- js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题
js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题 js模拟form表单提交数据源码: /** * js模拟form表单提交 * @param ...
- 防止表单提交时刷新页面-阻止form表单的默认提交行为
最近在写 ajax 提交的时候遇到一个问题,在执行 ajax 提交之后,浏览器页面自动刷新了,主要是没有 由于form 表单的默认提交行为.一下是几种阻止 form 表单默认提交行为的方式. 1.使用 ...
- Form表单提交数据的几种方式
一.submit提交 在form标签中添加Action(提交的地址)和method(post),且有一个submit按钮(<input type='submit'>)就可以进行数据的提交, ...
- 20181019 记录 window.setTimeout('dofunction()',2000); - layui form 表单提交 事件 - F11全屏 事件 window.onresize
1 延时事件 window.setTimeout('dofunction()',2000); 函数外面要有引号 如果没有引号 就不能延时执行 应该是内容进行eval,所以外层不是传递字符串的话,外层函 ...
- form表单提交没有跨域问题,但ajax提交存在跨域问题
浏览器的策略本质是:一个域名下面的JS,没有经过允许是不能读取另外一个域名的内容,但是浏览器不阻止你向另外一个域名发送请求. 所以form表单提交没有跨域问题,提交form表单到另外一个域名,原来页面 ...
- 关于form表单提交ajaxForm和ajaxSubmit的用法与区别
前几天在学习form表单提交时看到这两种方法,这两种方法都是实现form的ajax提交的方法,看了很多资料还是不太明白其用法和区别,最后直接自己写demo,很快就理解,所以说实操是学习的最快捷直接的途 ...
- jQuery Form 表单提交插件-----formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的 应用
一.jQuery Form的其他api 1. formSerialize 将表单序列化成查询串.这个方法将返回一个形如: name1=value1&name2=value2的字符串.是否可 ...
- jQuery Form 表单提交插件----Form 简介,官方文档,官方下载地址
一.jQuery Form简介 jQuery Form插件是一个优秀的Ajax表单插件,可以非常容易地.无侵入地升级HTML表单以支持Ajax.jQuery Form有两个核心方法 -- ajaxF ...
随机推荐
- appium的xpath定位问题及常用方法
关于类似的帖子好像很多,但是没有找到具体能帮我解决问题的办法.还是自己深究了好久才基本知道app上面的xpath定位和web上的不同点: 先放一个图: A,先说说不用xpath的场景,一般是用于存在i ...
- Java编程思想学习笔记——字符串
前言 字符串操作是计算机程序设计中最常见的行为. 不可变String String对象是不可变的 重载"+"与StringBuilder String对象是不可变的,可以给Stri ...
- jquery绑定事件的坑,重复绑定问题
我实现点击table表格中的删除按钮,找到当前按钮的祖先元素tr 然后删除该行,但是我首先点击删除的时候要先弹出提示框,是否要下载,这时在点击删除按钮删除,之前没有考虑到事件重复绑定问题,所以每次点击 ...
- Lua常用时间函数
常用时间函数 print(os.time()) --当前系统时间值 print(os.date( print(os.date("*t"), os.time()) --当前系统时间表 ...
- Apache POI HSSF,XSSF和SXSSF的区别
http://blog.csdn.net/benben_1678/article/details/39989683 写的很好,用SXSSF即可解决大数据量,内存占用过高问题
- Python 程序员都会喜欢的 6 个库
在编程时,小挫折可能与大难题一样令人痛苦.没人希望在费劲心思之后,只是做到弹出消息窗口或是快速写入数据库.因此,程序员都会喜欢那些能够快速处理这些问题,同时长远来看也很健壮的解决方案. 下面这6个Py ...
- c#系统消息类封装
今天封装了一个返回json的消息类 using System; using System.Collections.Generic; using System.Linq; using System.Te ...
- 在Ubuntu中开启Soft AP功能
在Ubuntu中开启Soft AP功能 1.查看采用的无线网卡是否支持Soft AP: 注意,可以看到有AP字样,表明支持.楼主比较背,在易迅上挑了个销量最高的netcore nw360,结果无法搭建 ...
- RHEL5 yum更新源
1.检查yum是否安装 rpm -qa |grep yum 2.利用CentOS的yum更新源来实现RHEL5的YUM功能 vi /etc/yum.repos.d/CentOS-Base.repo [ ...
- CentOS 6.3 + Subversion + Usvn 搭建版本管理服务器
一. Subversion 简介 Subversion是一个自由,开源的版本控制系统.在Subversion管理下,文件和目录可以超越时空.Subversion将文件存放在中心版本库里.这个版本库很像 ...