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. 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值