使用jquery easyui验证组合框

时间:2013-06-11 20:10:13

标签: jquery validation combobox jquery-validate jquery-easyui

在我的页面中,有两个插件:jquery validatejquery easyui .. 我使用jQuery Validate来验证表单中的数据输入。 我使用jQuery EasyUI来自定义组合框,允许在组合框中搜索数据。

所以,我把验证插件:

$("#form1").validate({
        rules:{
            filename:{
                required: true,
                minlength: 3
            },
            leia:{
                required: true
            }
        }
    });

没关系!是的工作! 但是当我放入easyUI插件并在combobox'leia'中设置类时,'leia'的验证不再有用。

<form id="form1" action="" method="post">
        <div>
                <label>Name:</label>
                <input type="text" name="filename" />
        </div>
        <div>
                <label>Leiame:</label>
                <select name="leia" class="easyui-combobox">
                        <option value=""></option>
                        <option value="1">Java</option>
                        <option value="2">C</option>
                        <option value="3">C#</option>
                        <option value="4">PHP</option>
                </select>
    </div>

        <input id="submit-go" type="submit" name="add" value="Add" />
</form>

当我在'leia'中取消课程时,验证工作正常! 有人能帮助我吗?

提前谢谢

1 个答案:

答案 0 :(得分:2)

您需要做的就是允许jQuery Validate在隐藏元素上执行。 EasyUI只是隐藏选择并用自己的元素替换它,但最终在后台更新你的选择。为了使这项工作:

$("#form").validate({
    ignore:'',//by default it ignores hidden inputs, so setting this to blank overrides that
    rules: {              
        leia: {
          required: true
        }
      },
      errorPlacement: function(error,element){
        if (element.hasClass('combo-value')){
            element.closest("span.combo").after(error);
        } else {
            element.after(error);   
    }   }       
});

我也添加了errorPlacement函数,它将错误消息移到easy UI标记之外(否则它会被隐藏在设置了overflow:hidden的范围内)。

在此处查看:http://jsfiddle.net/ryleyb/B5XX7/2/