Mik*_*cid 3 validation jquery jquery-chosen
我正在尝试使用choosen.js生成的选择下拉列表在表单上设置验证
这是我的代码:
$('.chzn-single').bind("change", function(){
$myform.validate().element($(this));
});
Run Code Online (Sandbox Code Playgroud)
我认为这样的事情可行,但我没有取得任何成功.有什么想法?
谢谢
小智 8
我通过这样做完成了它:
var validator = $("#formid").data('validator');
validator.settings.ignore = ":hidden:not(select)";
Run Code Online (Sandbox Code Playgroud)
通过这样做,您将验证隐藏的选择字段; chzn隐藏了您的默认列表并将其替换为自己的列表.
小智 5
在遇到这个问题几天后,我找到了一种对我有用的方法。您需要在选择更改时触发验证,这可以通过 .change() 函数完成。我使用了以下代码:
$("#chosenElement").chosen().change(function() {
$("#myForm").validate().element("#chosenElement");
});
Run Code Online (Sandbox Code Playgroud)
我正在使用所有最新版本(jquery 1.9,jquery.validate 1.11.1,选择 0.9.12)
这就是我正在使用的......
$.validator.setDefaults({
ignore: null, // you can use ":hidden:not(select)"
errorPlacement: function(error, element) {
if(element.hasClass('chzn-done')) {
var id = element.attr("id");
$("#"+id+"_chzn a").addClass("error");
}
}
});
$('#myform').validate();//use your form ID or class selector
$('select').chosen()
.change(function () {
var id = $(this).attr("id");
if($(this).valid())
$("#"+id+"_chzn a").removeClass("error");
else
$("#"+id+"_chzn a").addClass("error");
});
Run Code Online (Sandbox Code Playgroud)
然后在css
.chzn-container a.error {
border-color: red !important;
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助....