表单验证提交——submit与button

之前做东西接触过表单验证提交,但是都是为了完成工作,做完就做完了,没有注过表单验证提交有几种方法,各方法都有啥区别。今天瞎折腾了一下,对他们研究了一下,如下是我个人的理解:

submit

从字面上看是“提交”的意思,专门为提交而生。他既可以接受点击提交表单也能接受Enter(回车键)提交表单(也就是表单里的控件在获取焦点的时候回车直接提交表单),这样就比较人性化。

<form name="myForm" action="http://www.baidu.com" method="get"  >
  name:<input name="name" type="text" /><br />
  <input name="submit" type="submit" value="submit提交" />
</form>

当我输入"xiaomou"回车的时候表单提交了,url为:http://www.baidu.com/?name=xiaomou&submit=submit提交

button

就是个普通的按钮,接受回车提交表单,但是点击它的时候没反应(当然我说的是没有js的情况下),如要他实现简单的提交表单,要通过表单提交事件,<input name="button" type="button" value="button提交" onClick="this.form.submit()"/>,这时候你会惊奇的发现它也能像submit按钮一样点击就可以提交表单了

<form name="myForm" action="http://www.baidu.com" method="get"  >
  name:<input name="name" type="text" /><br />
  <input name="button" type="button" value="button提交" onClick="this.form.submit()"/>
</form>

同样当我输入"xiaomou"回车的时候表单提交了,url为:http://www.baidu.com/?name=xiaomou,没有了submit=submit提交

下面通过测试代码比较一下他们表单验证提交的不同实现方法:

通过submit按钮触发表单的提交事件onSubmit来提交表单

 1 <form name="myForm" action="http://www.baidu.com" method="get" onSubmit="return submitForm()" >
 2   name:<input name="name" type="text" /><br />
 3   <input name="submit" type="submit" value="submit提交"/>
 4 </form>
 5 <script>
 6  function submitForm(){
 7      var _form=document.forms[0];
 8      //var _form=document.getElementsByName("myForm")[0];
 9      //var _form=document.getElementsByName("myForm").item(0);
10      return checkName(_form.name,_form.name.value);
11  }
12  function checkName(id,name) {
13   var filter1 = /^[A-Za-z]+$/;
14   var filter2 =/[\u4E00-\u9FA5]{2,5}(?:·[\u4E00-\u9FA5]{2,5})*/;
15   if (filter1.test(name)||filter2.test(name)){
16        return true;
17   }
18   else {
19       alert("请输入名字,名字上不能出现数字或特殊字符");
20       id.focus();
21       return false;
22   }
23  }
24 </script>

当然也可以在submit按钮onClick提交,如:

 1 <form name="myForm" action="http://www.baidu.com" method="get" >
 2     name:<input name="name" type="text" /><br />
 3     <input name="submit" type="submit" value="submit提交" onClick="return submitForm()"/>
 4 </form>
 5 <script>
 6 function submitForm(){
 7     var _form=document.forms[0];
 8     //var _form=document.getElementsByName("myForm")[0];
 9     //var _form=document.getElementsByName("myForm").item(0);
10     return checkName(_form.name,_form.name.value);
11 }
12 function checkName(id,name) {
13  var filter1 = /^[A-Za-z]+$/;
14  var filter2 =/[\u4E00-\u9FA5]{2,5}(?:·[\u4E00-\u9FA5]{2,5})*/;
15  if (filter1.test(name)||filter2.test(name)){
16       return true;
17  }
18  else {
19      alert("请输入名字,名字上不能出现数字或特殊字符");
20      id.focus();
21      return false;
22  }
23 }
24 </script>

把上面的代码换成button按钮

 1 <form name="myForm" action="http://www.baidu.com" method="get" onSubmit="return submitForm()" >
 2   name:<input name="name" type="text" /><br />
 3   <input name="button" type="button" value="button提交"/>
 4 </form>
 5 <script>
 6  function submitForm(){
 7      var _form=document.forms[0];
 8      //var _form=document.getElementsByName("myForm")[0];
 9      //var _form=document.getElementsByName("myForm").item(0);
10      return checkName(_form.name,_form.name.value);
11  }
12  function checkName(id,name) {
13   var filter1 = /^[A-Za-z]+$/;
14   var filter2 =/[\u4E00-\u9FA5]{2,5}(?:·[\u4E00-\u9FA5]{2,5})*/;
15   if (filter1.test(name)||filter2.test(name)){
16        return true;
17   }
18   else {
19       alert("名字不能出现数字或特殊字符");
20       id.focus();
21       return false;
22   }
23  }
24 </script>

如上这一段代码点击提交按钮没反应,只能接受回车键提交事件,那在给botton按钮加上onClick="this.form.submit()"会不会触发提交事件呢?结果如愿的实现了一半!!——没有通过验证就直接提交了,只是直接执行了submit()事件提交了表单而已,没有执行onSubmit="return submitForm()"里的表单验证事件就提交了。

 1 <form name="myForm" action="http://www.baidu.com" method="get" onSubmit="return submitForm()">
 2   name:<input name="name" type="text" /><br />
 3   <input name="button" type="button" value="button提交" onClick="this.form.submit()"/>
 4 </form>
 5 <script>
 6  function submitForm(){
 7      var _form=document.forms[0];
 8      //var _form=document.getElementsByName("myForm")[0];
 9      //var _form=document.getElementsByName("myForm").item(0);
10      return checkName(_form.name,_form.name.value);
11  }
12  function checkName(id,name) {
13   var filter1 = /^[A-Za-z]+$/;
14   var filter2 =/[\u4E00-\u9FA5]{2,5}(?:·[\u4E00-\u9FA5]{2,5})*/;
15   if (filter1.test(name)||filter2.test(name)){
16        return true;
17   }
18   else {
19       alert("名字不能出现数字或特殊字符");
20       id.focus();
21       return false;
22   }
23  }
24 </script>

如要让它接受回车键提交与点击提交都执行表单验证后再提交上服务器,只能再修改js了,如下代码修改过后能实现:

 1 <form name="myForm" action="http://www.baidu.com" method="get" onsubmit="return submitForm()">
 2   name:<input name="name" type="text" /><br />
 3   <input name="button" type="button" value="button提交" onClick="submitForm()"/>
 4 </form>
 5 <script>
 6  function submitForm(){
 7      var _form=document.forms[0];
 8      if (checkName(_form.name,_form.name.value)){
 9          _form.onSubmit=true; //for enter
10          return true;          //点击用
11      }else{
12          _form.onSubmit=false;
13          return false;
14      }
15  }
16  function checkName(id,name) {
17   var filter1 = /^[A-Za-z]+$/;
18   var filter2 =/[\u4E00-\u9FA5]{2,5}(?:·[\u4E00-\u9FA5]{2,5})*/;
19   if (filter1.test(name)||filter2.test(name)){
20        return true;
21   }
22   else {
23       alert("名字不能出现数字或特殊字符");
24       id.focus();
25       return false;
26   }
27  }
28 </script>

表单验证提交——submit与button,布布扣,bubuko.com

时间: 2024-10-20 23:03:01

表单验证提交——submit与button的相关文章

form表单重复提交,type=“button”和type=“submit”区别

公司测试提了一个项目后台在IE浏览器下(360,firefox就没问题)出现数据重复的问题,调试了好久终于发现问题所在,也不知道是谁写的代码,醉醉的.... 错误地点: <input type="submit" value="提交"  class="btn"  id="formSubmit" onclick="checkForm()"  /> type类型写成submit,而在checkForm

AngularJS的表单验证提交示例

代码下载:https://files.cnblogs.com/files/xiandedanteng/angularjsFormSubmit.rar 前台代码: <%@ page contentType="text/html; charset=UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.

Jquery插件easyUi表单验证提交

<form id="myForm" method="post"> <table align="center" style="width:400px;height:auto;margin-top: 20px"> <tr> <td align="right">命令:</td> <td><input id="cmd"

boostrap ajax表单验证提交

=============================================================================== 1. 1 <link href="<%=basePath %>bootstrap/css/bootstrap-datetimepicker.min.css" rel="external nofollow" rel="stylesheet" media="scre

element-ui Form表单验证

element-ui Form表单验证规则全解 element的form表单非常好用,自带了验证规则,用起来很方便,官网给的案例对于一些普通场景完全没问题,不过一些复杂场景的验证还得自己多看文档摸索,自己经过数次爬坑 之后,总结了几种form表单的验证规则,为了便于阅读,验证规则是拆分的,完整的代码放在文末 1. 普通输入验证 <el-form-item label="活动名称" prop="name"> <!-- validate-event属性

HTML5 表单验证

============================================== 1.required --- 必填字段验证 2.minlength, maxlength --- 字符长度验证 3.min, max --- 数值范围验证  用于number,range 和日期时间类型 4.step --- 步长验证 5.pattern --- 正则表达式验证 6.novalidate(form中) ---禁用表单验证 formnovalidate(submit中) ---禁用表单验证

JavaScript基础 submit按钮配合form的onsubmit实现表单的提交与验证

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"

JavaScript基础 submit按钮结合onclick事件 实现表单的提交与验证

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"

js 验证表单 js提交验证类

js 验证表单 js提交验证类 附加:js验证radio是否选择 <script language="javascript">function checkform(obj){for(i=0;i<obj.oo.length;i++)         if(obj.oo[i].checked==true) return true; alert("请选择")return false; }</script><form id="f