使用JQuery在条件为真时启用Dropdownlist

时间:2015-10-07 09:47:13

标签: c# jquery asp.net-mvc

我正在开发一个MVC c#项目。我是JQuery的新手,如果你们能提出一些关于这里出了什么问题的想法,我会很喜欢它。

我有两个下拉列表:

            @Html.DropDownList("year", new SelectList(SomeModel.SomeHelper.SomeMethod()), "All", new {@class = "dropDown"})

            @Html.DropDownList("month", new SelectList(new[]
            {
                new {ID = "1", Name = "January"},
                new {ID = "2", Name = "February"},


            }, "ID", "Name"),"All", new {@class = "dropDown", @disabled = "disabled"}) 

注意:大多数月份是故意删除的

将始终启用年份列表。但是,如果从年份列表中选择了值,则仅启用月份列表。因此,我写了这个JQuery工作正常:

$(document).ready(function ()
{
    var yearDropdown = $("#year");
    var monthDropdown = $("#month");

   yearDropdown.on('change', function (sender, arg) {
        var newVal = $(this).val();
        monthDropdown.removeAttr('disabled', newVal !== 0);
    }); 

});

然而,现在..当我不想选择年份时(我回到选择年份列表中的所有'),月份列表仍然启用。

编辑: 年份列表包含" 2010"," 2011"等值..等等" all"为年份列表选择我想要禁用月份列表。选择一年后,我希望启用月份列表。

因此我写了这个:

$(document).ready(function () {
        var monthDropdown = $("#month");
        var yearDropdown = $("#year");

        yearDropdown.on('change', function (sender, arg) {
            if ($(yearDropdown) == "All") {
                $("#monthDropdown").prop("disabled", false);
            }
        });
    });

哪个不起作用..(这意味着什么都没发生),我不确定这是否是正确的方法。截至目前:只选择年份列表中的月份列表。没什么..

任何指导? :)

更新:

在所有评论的人的指导下,我设法编写了一个终于有效的jquery:

$(document).ready(function () {
        var yearDropdown = $("#year");
        var monthDropdown = $("#month");

        yearDropdown.on('change', function() {
            var newVal = $("#year").val();
            if (newVal === "") {
                monthDropdown.prop('disabled', !this.selectedIndex);
            }
            else {
                monthDropdown.prop('enabled', !this.selectedIndex);
            }
        });

    });

现在我对jquery有了更好的理解:)虽然我将一个答案标记为答案,但这些评论真的算了!

2 个答案:

答案 0 :(得分:1)

而是使用.prop()

monthDropdown.prop('disabled', newVal != 0);

你必须检查值:

yearDropdown.on('change', function (sender, arg) {
    if (yearDropdown.val() == "All") { // use `.val()` to check the value
        $("#monthDropdown").prop("disabled", false);
    }
});

yearDropdown.on('change', function (sender, arg) {
    $("#monthDropdown").prop("disabled", this.value == "All");
});

答案 1 :(得分:1)

使用$(yearDropdown),您将获得jQuery元素(DOM元素的包装器)。

使用$(yearDropdown).val()获取实际值!