jquery.validate.js校验select2解决方案 Jquery插件select2校验解决方案

为了用jquery.validate.js校验select2,折腾了2天,现在终于解决了,把方法告诉大家。

 

一、使用用了select2美化select

 

 

Js代码   收藏代码
  1. $('select').select2();  

 

 

 

二、页面部分代码

 

 

Html代码   收藏代码
  1. <div class="form-group">  
  2.   <label for="tel1" class="control-label">性别:</label>  
  3.     <div>  
  4.       <select name="genders" id="genders" class="form-control">  
  5.         <option value="">请选择…</option>  
  6.         <c:forEach items="${genders}" var="gender">  
  7.         <option value="${gender}" ${userInSession.genders eq gender?"selected='selected'":""}>${gender.value}</option>  
  8.        </c:forEach>  
  9.      </select>  
  10.   </div>  
  11. </div>  

  

 

三、使用jquery.validate.js

导入js文件

jquery.validate.min.js

additional-methods.min.js

messages_zh.min.js

additional-methods-custom.js  (自己定义的校验方法扩展js文件)

 

四、校验

 

 

Js代码   收藏代码
  1. var validateObj = $('#userInfoEditForm').validate({  
  2.     ignore: "",  
  3.     errorClass : 'help-block',    
  4.     focusInvalid : true,  
  5.     rules : {    
  6.         genders : {  
  7.             required : true  
  8.         }  
  9.     },    
  10.     messages : {    
  11.         genders : {    
  12.             required : "请选择性别"    
  13.         }  
  14.     submitHandler : function(form) {  
  15.         return false;  
  16.         form.submit();//form.submit(); 或者$(form).ajaxSubmit();  
  17.     }    
  18. });   
  19.   
  20. $("#genders").change(function(){  
  21.     $(this).valid();  
  22. });  

 

 

五、问题说明

1、使用select2美化select下拉列表后,select2会把原来的select隐藏掉,设置css属性(display:none),然后再通过select2重新定制界面

 

2、但jquery.validate.js默认不是校验:hidden属性的控件,所以造成原来的select校验不了

官网说明:

ignore (default: ":hidden")

Type: Selector

Elements to ignore when validating, simply filtering them out. jQuery's not-method is used, therefore everything that is accepted by not() can be passed as this option. Inputs of type submit and reset are always ignored, so are disabled elements.

 

Example: Ignores all elements with the class "ignore" when validating.

 

$("#myform").validate({

  ignore: ".ignore"

});

 

3、解决方法就是加ignore属性,把值设置为""空字符串

ignore: "",

 

4、设置ignore后在提交时就会对隐藏的属性进行校验,但选择的时候没有进行实时校验,因为你选择的是select2。所以要给select加一个change事件,当改变时,再校验一次。

 

Js代码   收藏代码
  1. $("#genders").change(function(){  
  2.     $(this).valid();  
  3. });  

 需要注意的是:valid方法是jquery.validate.js中的方法,所以用的时候,要先调用初始化方法validate( ),

然后在后面再重新调用valid()校验方法。

valid( )  可以校验整个表单,也可以校验单个属性。

官网说明:

valid( )  

Returns: Boolean

Description: Checks whether the selected form is valid or whether all selected elements are valid.

validate() needs to be called on the form before checking it using this method. 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值