Jquery验证器不会取消突出显示“已选择”选择框

时间:2012-11-21 06:16:48

标签: jquery-validate jquery-chosen

我正在使用选择与jquery valodation 你可以看到这个例子:http://jsfiddle.net/hfdBF/9/
如果单击“提交”,则会看到验证适用于组合和输入。

如果您在输入框中输入一个字母,您将收到一条警告,表明该字母未突出显示,正如它所假设的那样。
但是,如果您在选择框中选择一个值,它将不会被警告为未突出显示。

你知道如何让它发挥作用吗?

$(function() {

var $form = $("#form1");

$(".chzn-select").chosen({no_results_text: "No results matched"});
$form.validate({
    errorLabelContainer: $("#form1 div.error"),
    wrapper: 'div',
});

var settings = $.data($form[0], 'validator').settings;
settings.ignore += ':not(.chzn-done)';
settings.unhighlight= function(el){
   alert(el.name + " hit unhighlight")        
}

});

谢谢

2 个答案:

答案 0 :(得分:4)

您无需手动进行验证。您可以将函数绑定到change事件处理程序,该处理程序将检查特定选择是否有效。如果选择有效,这也将清除错误。

$('.chzn-select').change(function () {
    $(this).valid();
});

答案 1 :(得分:1)

您需要手动重置jQuery验证:

$(".chzn-select").chosen().change(function () {
    var value = $('#UserCompanyIds').val(); // the select element
    if (value != "") {
        $('.field-validation-error').each(function () {
            if ($(this).attr('data-valmsg-for') == 'UserCompanyIds') {
                $(this).html("");
                $(this).removeClass("field-validation-error").addClass("field-validation-valid");
            }
        });
    }
});

我希望这有帮助!