一旦选择了jquery,就不会获得@ Html.DropDownListFor()的验证消息

时间:2014-01-06 13:00:34

标签: html5 asp.net-mvc-4 jquery-chosen html.dropdownlistfor

代码如下:
 如果我没有在组合框中选择任何值并按提交,则不会询问验证消息。

<tr>
            <td>Department </td>
            <td> : </td>
            <td class="@*@Model.NoEdit*@">    
                @Html.DropDownListFor(m => m.DepartmentId, new SelectList(Model.Departments, "SelectedDepartmentId", "DepartmentCode"), "-- Select Department--", new {@class = "chosen-select", id = "cboDeptartment" })
                @Html.ValidationMessageFor(model => model.DepartmentId)
            </td>

3 个答案:

答案 0 :(得分:8)

经过大量研究后解决了......

$(document).ready(function () {
    var validator = $("#Your_form_id").data('validator');
    validator.settings.ignore = ":hidden:not(select)";
});

答案 1 :(得分:6)

重申我的简短评论作为答案。 : - )

为了获得验证消息,我使用了Joseph提到的相同方法,尽管我使用了一个HTML类来处理我使用Chosen的那些选择。例如:

validator.settings.ignore = ":hidden:not(.select-chosen)";

要在选择值时清除验证消息,您需要为“更改”事件附加事件侦听器,并明确强制重新选择select。例如,假设您有一个引用选择框的变量select

select.on("change", function(evt, params) {
    $(evt.target).valid();
});

选择会在值发生变化时触发“更改”事件。

答案 2 :(得分:2)

正确对齐上述答案

 $(function () {
        var validator = $("#Your_form_id").data('validator');
        validator.settings.ignore = ":hidden:not(.chosen-select)";
        $(".chosen-select").chosen();
        $("#Your_dropdown_id").change(function (evt, params) {
            $(evt.target).valid();
        })

    });