我正在开发一个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有了更好的理解:)虽然我将一个答案标记为答案,但这些评论真的算了!
答案 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()
获取实际值!