【问题标题】:Show/Hide on click dropdownlist MVC 4在单击下拉列表 MVC 4 上显示/隐藏
【发布时间】:2016-11-27 03:37:42
【问题描述】:

我有这样的看法:

<div class="editor-field">Best</div>
<div class="editor-field">
    @Html.DropDownListFor(model => model.Best, new List<SelectListItem>
    {
        new SelectListItem { Value = "Best3", Text = "Best 3"},
        new SelectListItem { Value = "Best5", Text = "Best 5"},
        new SelectListItem { Value = "Best10", Text = "Best 10"},
        new SelectListItem { Value = "XBest", Text = "X Best"}
    },
    new { @class = "myselect" })
    @Html.ValidationMessageFor(model => model.Best)
</div> 
<div class="editor-label">X</div>
<div class="editor-field">
    @Html.EditorFor(model => model.X)
    @Html.ValidationMessageFor(model => model.X)
</div>

我有这个 jquery:

$('#Best').on('change', function () {
    if ($(this).val() != "XBest") {
        $('#X').hide(); //invisible
        $('#X').attr('disabled', 'disabled'); // disable
    } else {
        $('#X').show(); //visible
        $('#X').removeAttr('disabled'); // enable
    }
});

它可以工作,但是当我转到此视图时,EditorFor X 始终可见,只有当我开始单击下拉列表的值时才会发生变化。我的问题是如何在访问视图时保持隐藏状态并且仅在点击时显示。

【问题讨论】:

  • 你可以在$('#Best').on('change', function () {之前添加$('#Best').trigger('change');
  • 还是一样的问题,第一次访问视图时editorfor是可见的
  • 除非选择的选项是XBest,否则不会。但是如果你想隐藏它,即使选择的选项是XBest,那么只需使用 css 将其设置为display: none;

标签: javascript c# jquery asp.net-mvc asp.net-mvc-4


【解决方案1】:

您需要在绑定事件后立即执行change()事件,如下所示。

$('#Best').on('change', function () {
    if ($(this).val() != "XBest") {
        $('#X').hide(); //invisible
        $('#X').attr('disabled', 'disabled'); // disable
    } else {
        $('#X').show(); //visible
        $('#X').removeAttr('disabled'); // enable
    }
}).change(); // auto execute

【讨论】:

  • $('#Best').on('change', function () { if ($(this).val() != "XBest") { $('#X').hide().attr('disabled', 'disabled'); } else { $('#X').show().removeAttr('disabled'); } }).change(); 将是优化后的
  • 感谢您的建议。但问题集中在触发change 事件而不是优化。 @ShashankSood
  • 那是你作为评论而不是答案添加的
  • 好的。那就看更优化的方式$('#Best').on('change', function() { var isXBest = $(this).val() == "XBest"; $('#X').toggle(isXBest).prop('disabled', !isXBest); }).change();@ShashankSood
猜你喜欢
  • 2017-07-27
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
  • 2013-07-02
  • 1970-01-01
相关资源
最近更新 更多