我正在尝试使用由choosen.js 生成的选择下拉列表在表单上设置验证
这是我的代码:
$('.chzn-single').bind("change", function(){
$myform.validate().element($(this));
});
我在想这样的事情可以工作,但我没有任何成功。有什么想法吗?
谢谢
我正在尝试使用由choosen.js 生成的选择下拉列表在表单上设置验证
这是我的代码:
$('.chzn-single').bind("change", function(){
$myform.validate().element($(this));
});
我在想这样的事情可以工作,但我没有任何成功。有什么想法吗?
谢谢
我通过这样做完成了它:
var validator = $("#formid").data('validator');
validator.settings.ignore = ":hidden:not(select)";
通过这样做,您将验证隐藏的选择字段;chzn 隐藏您的默认列表并将其替换为自己的。
在遇到这个问题几天后,我找到了一种对我有用的方法。您需要在选择更改时触发验证,这可以通过 .change() 函数来完成。我使用了以下代码:
$("#chosenElement").chosen().change(function() {
$("#myForm").validate().element("#chosenElement");
});
我正在使用所有最新版本(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");
});
然后在css中
.chzn-container a.error {
border-color: red !important;
}
希望这可以帮助....
试试这个。
验证时:
ignore: function(index, element) {
return !!$(element).parents(':hidden').length;
}
选择时:
$('.chosen-select').chosen().change(function() {
$(this).trigger('click');
});
This Code will check validation on submit and also when choosen change is fired.
$("#form").validate({
errorPlacement: function (error, element) {
if (element.is('select')) {
error.insertAfter(element.siblings(".chosen-container"));
} else {
error.insertAfter(element);
}
},
highlight: function (element, errorClass, validClass) {
$(element).next().addClass(errorClass);
},
unhighlight: function (element, errorClass, validClass) {
$(element).next().removeClass(errorClass);
}
});
$(".chosen-select").chosen().change(function () {
$("#form").validate().element(".chosen-select");
});
最简单的方法是使用以下方法:
这不仅解决了无法查看验证的问题,而且还将标准的“input-validation-error”类应用于 selected.js 样式的选择。
有两种情况需要在提交表单和选择更改时都应用它。请参阅下面的三段代码。
设置表单验证以显示隐藏:
var validator = $("#FormID").data('validator');
validator.settings.ignore = ":hidden:not(select)";
检查表单提交:
$('#FormID').on('submit', function () {
var ChosenDropDowns = $('.chzn-done');
ChosenDropDowns.each(function (index) {
var ID = $(this).attr("id");
if (!$(this).valid())
{
$("#" + ID + "_chzn a").addClass("input-validation-error");
}
else
{
$("#" + ID + "_chzn a").removeClass("input-validation-error");
}
});
});
检查选择更改:
$(".chzn-select").chosen().change(function () {
var ID = $(this).attr("id");
if (!$(this).valid()) {
$("#" + ID + "_chzn a").addClass("input-validation-error");
}
else {
$("#" + ID + "_chzn a").removeClass("input-validation-error");
}
});
它忽略了原始选择,因为它是隐藏的。我得到了:
$("#Form").data("validator").settings.ignore = "";
或者
var settings = $.data($('#Form')[0], 'validator').settings;
settings.ignore += ':not(.chzn-done)';
去工作。