zoukankan      html  css  js  c++  java
  • jquery.validate.js校验select2解决方案,Jquery插件select2校验解决方案

    jquery.validate.js校验select2解决方案

    Jquery插件select2校验解决方案

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    蕃薯耀 2015年9月15日 11:25:26 星期二

    http://fanshuyao.iteye.com/

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

    一、使用用了select2美化select

    $('select').select2();

    二、页面部分代码

    <div class="form-group">
      <label for="tel1" class="control-label">性别:</label>
        <div>
          <select name="genders" id="genders" class="form-control">
            <option value="">请选择…</option>
            <c:forEach items="${genders}" var="gender">
            <option value="${gender}" ${userInSession.genders eq gender?"selected='selected'":""}>${gender.value}</option>
           </c:forEach>
         </select>
      </div>
    </div>

      

    三、使用jquery.validate.js

    导入js文件

    jquery.validate.min.js

    additional-methods.min.js

    messages_zh.min.js

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

    四、校验

    var validateObj = $('#userInfoEditForm').validate({
        ignore: "",
        errorClass : 'help-block',  
        focusInvalid : true,
        rules : {  
            genders : {
            	required : true
            }
        },  
        messages : {  
            genders : {  
                required : "请选择性别"  
            }
        submitHandler : function(form) {
        	return false;
            form.submit();//form.submit(); 或者$(form).ajaxSubmit();
        }  
    }); 
    
    $("#genders").change(function(){
    	$(this).valid();
    });

    五、问题说明

    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事件,当改变时,再校验一次。

    $("#genders").change(function(){
    	$(this).valid();
    });

     需要注意的是: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. 

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    蕃薯耀 2015年9月15日 11:25:26 星期二

    http://fanshuyao.iteye.com/

  • 相关阅读:
    React Native ios打包
    ReactNative state更新,视图不更新的问题
    XF警告试图
    XF 彩色矩形块
    XF 定制图片
    XF 通过判断平台加载不同的图片
    XF 进度条和指示器
    XF 滑块和步进控件
    XF 开关控件
    XF 按钮控件
  • 原文地址:https://www.cnblogs.com/fanshuyao/p/6227174.html
Copyright © 2011-2022 走看看