`

BootStrap表单校验

阅读更多

 

 bootstrapvalidator使用时需要注意的事项

如果你使用的前端框架是bootstrap,那么前端验证框架就不必考虑了,bootstrapvalidator是最好的选择,它和bootstrap的结合最完美,不过要注意版本的问题,针对bootstrap2和bootstrap3有不同的版本。

 

下面是我遇到的两个注意事项,自己做个笔记:

1、为每个要验证的表单元素添加name属性

例如:

 

  1. <div class="form-group">  
  2.     <input type="text" placeholder="请输入短信验证码" id="smsCaptcha" 
  3. name="smsCaptcha" class="form-control"  
  4.         data-bv-notempty data-bv-notempty-message="验证码不能为空"  
  5.         data-bv-regexp="true" data-bv-regexp-regexp="[0-9]{6}" 
  6. data-bv-regexp-message="验证码格式不正确"  
  7.     >  
  8. </div>  
  9. <div class="form-group">  
  10.     <input type="email" class="form-control" id="exampleInputEmail1" 
  11. placeholder="Enter email"   
  12.         data-bv-notempty data-bv-notempty-message="验证码不能为空"  
  13.     >  
  14. </div>  

 

 

上面这个例子中,第一个表单元素添加了name属性,第二个表单元素没有name属性,而这两个表单元素都使用了非空验证,最终效果如下:

 

从结果可以看出,如果要验证一个表单项,则该表单项必须有name属性。否则验证将不起作用。

 

2、为保持良好的效果,表单元素最好放在div.form-group里面

例如下面这个例子:

 

  1. <label for="exampleInputEmail1">用户名</label>  
  2. <div class="input-group" >  
  3.     <input type="text" class="form-control required" placeholder="用户名"
  4.     id="username" name="username" data-bv-notempty 
  5.     data-bv-notempty-message="请输入用户名" />  
  6.     <span class="input-group-addon">  
  7.         <span class="glyphicon glyphicon-user"></span>  
  8.     </span>  
  9. </div>  

 

 

用户名输入框及其label直接放在了form元素下面,则最终产生的效果如下:

 

 

当输入错误时的提示信息位置在整个form表单的下面,样式发生了极大的变化,虽然能达到验证的效果,但是样式却难以令人接受,解决办法就是将需要验证的表单元素放在div.form-group下面:

  1. <div class="form-group">  
  2.     <label for="exampleInputEmail1">用户名</label>  
  3.     <div class="input-group" >  
  4.         <input type="text" class="form-control required" 
  5.         placeholder="用户名" id="username" name="username" 
  6.         data-bv-notempty data-bv-notempty-message="请输入用户名" />  
  7.         <span class="input-group-addon">  
  8.             <span class="glyphicon glyphicon-user"></span>  
  9.         </span>  
  10.     </div>  
  11. </div>  

 

 

3、防止表单重复提交问题

在未引入bootstrapvalidator之前,自己写过一段js代码来防止表单提交,当用户点击提交按钮时候,将提交按钮置灰,代码如下:

 

[javascript] view plaincopyprint?在CODE上查看代码片派生到我的代码片
 
  1. var form = $('form');  
  2. var formType = form.attr('class');  
  3. if(formType != null){  
  4.     //用get和post标识表单类型  
  5.     //get用于标识搜索类型的表单  
  6.     //post用于标识添加,更新类型的表单  
  7.     var get = formType.indexOf('get');  
  8.     var post = formType.indexOf('post');  
  9.     form.submit(function(){  
  10.         if(get != -1){  
  11.             return ;  
  12.         }  
  13.         if(post != -1){  
  14.             if(!submited){  
  15.                 submited = true;  
  16.                 $("button[type=submit]").prop('disabled',true);  
  17.             }else{  
  18.                 return false;  
  19.             }  
  20.         }  
  21.     });  
  22. }  


但是引入bootstrapvalidator后却和这段代码冲突,具体表现为,如果验证出错,例如,某个input必填项没有填写时就提交了表单,此时bootstrapvalidator会提示你这个input为必填的,此时提交按钮为disable状态,直到你填入数据后,按钮才为正常可提交状态,问题就在这,即使你填入了正常的数据,按钮也为正常状态,可是表单却无法提交。排查了大半天,问题就在于上段js代码。

 

其实bootstrapvalidator已经对重复提交做了设计,如果一个表单需要经过bootstrapvalidator验证,点击提交按钮的时候,提交按钮会置灰,直到服务器返回响应。那么,如果一个表单不需要验证呢,比如一个搜索表单,此时可以给表单一个class,如validation-form,在js主函数里面调用$("form.validation-form").bootstrapValidator();将验证器置空即可。

转自:http://blog.csdn.net/coolcaosj/article/details/38085191

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics