【问题标题】:Not getting validation message for @Html.DropDownListFor() once Chosen jquery is used使用选择的 jquery 后,不会收到 @Html.DropDownListFor() 的验证消息
【发布时间】:2014-01-06 13:00:34
【问题描述】:

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

<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>

【问题讨论】:

  • jquery 代码在哪里?
  • 我不确定我是否理解你。Chosen 是一个 jquery 插件,可以在这个网站上找到harvesthq.github.io/chosen

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


【解决方案1】:

经过大量研究解决...

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

【讨论】:

  • 现在它可以工作了,但是当我在下拉列表中选择一个值时它不会删除验证消息。只有当我按下提交按钮时它才会消失。
  • Joseph,您是否解决了选择值时清除验证消息的问题?我现在正在尝试解决这个问题。
  • 好的,找到了解决方案。假设选择框被变量 select 引用:select.on('change', function(evt, params) { $(evt.target).valid(); }); 这会强制验证字段。
  • 谢谢@MikeBrennan,我最终使用了引导下拉菜单。但是你能把它作为一个ans 发布,以便我可以将它标记为ans.. 将来可能会帮助smone :)
  • @MikeBrennan 在哪里添加选择功能我试过这个$(document).ready(function () { var validator = $("#form").data('validator'); validator.settings.ignore = ":hidden:not(.chosen-select)"; }); select: select.on('change', function (evt, params) { $(evt.target).valid(); });
【解决方案2】:

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

为了获取验证消息,我使用了 Joseph 提到的相同方法,但我对与 Chosen 一起使用的那些选择使用了 HTML 类。例如:

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

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

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

只要值发生变化,Chosen 就会触发那些“变化”事件。

【讨论】:

  • 我有同样的问题,我添加了Validator.settings... 行,但现在当我点击按钮时,我的模型不再出现
【解决方案3】:

所以正确对齐上述答案

 $(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();
        })

    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多