阻止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

最新文章

  1. mssql2000 身份证号码验证
  2. Unity粒子系统特性
  3. js日历表
  4. Disaster Recovery, High Availability, and Continuous Availability - What&#39;s the Difference?
  5. SqlHelper include Transaction
  6. asp.net中c# TextBox.MaxLength例子
  7. ASP.Net大文件上传组件详解
  8. (转)分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)
  9. poj 3258 River Hopscotch(二分搜索之最大化最小值)
  10. UESTC_秋实大哥去打工 2015 UESTC Training for Data Structures&lt;Problem G&gt;
  11. 创建以 API 为中心的 Web 应用
  12. GIS制图人员的自我修养(1)--制图误区
  13. mysql性能监控工具
  14. 哨兵2 NDVI
  15. java中构造代码块、方法调用顺序问题
  16. delphi 多线程之System.TMonitor (续一)
  17. Gulp 新手使用
  18. 关于服务器时区BEIST-8、GMT-8、Asia/Shanghai、CST、GMT+8:00等缩写的含义
  19. bzoj1238
  20. 【Selenium-WebDriver问题篇】Selenium实现元素的拖拽(java版)(转)

热门文章

  1. LoadRunner做性能测试 从设计到分析执行
  2. 修改linux终端DIR显示颜色
  3. android app rate on google play and amazon
  4. Eclipse------maven使用Maven build编译web项目显示&quot; javax.servlet.http 不存在&quot;
  5. SpringMVC由浅入深day02_8json数据交互
  6. 初试WebSocket构建聊天程序
  7. scala中隐式转换之隐式转换调用类中本不存在的方法
  8. Ubuntu下安装MySQL及简单操作
  9. 在wepy里面使用redux
  10. git切换分支(自记)