我正在开发一个MVC c#项目。我是新来的jQuery和会喜欢它,如果你们能借一些想法,以什么错在这里去..当条件成立时使用JQuery启用Dropdownlist
我有两个下拉列表:
@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”等数值。等等。当年份列表选择“全部”时,我想禁用月份列表。选择一年后,我希望启用月份列表。
因此我写了这个:
$(document).ready(function() {
var monthDropdown = $("#month");
var yearDropdown = $("#year");
yearDropdown.on('change', function (sender, arg) {
if ($(yearDropdown) == "All") {
$("#monthDropdown").prop("disabled", false);
}
});
});
没有工作..(这意味着什么都没有发生过),我不知道这是做它甚至以正确的方式。截至目前为止:只有从年份列表中选择月份列表。没有更多..
任何指导? :)
UPDATE:
与所有那些谁评论的指导下,我成功地编写终于研究出一个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'的目的是什么?仅供参考,值不是数字,而是一个字符串,removeAttr()jq方法不接受布尔参数,并且jq对象总是在js中真实。这在代码中会导致很多错误。在您的问题中发布相关的HTML标记会使您的问题在几秒钟内得到解决...... –
“所有”是默认值我在每个列表
@Html.DropDownList("year", new SelectList(SomeModel.SomeHelper.SomeMethod()), "All", new {@class = "dropDown"})
我没有为它设置的值设置..因为我还没有完全确定它是如何工作。但我能够从控制器中的这个列表中检索值,当所有选择我使用小于0来识别它。 另外..你是什么意思相关的HTML标记? – TsarJquery是客户端语言。它用于浏览器。您已经发布了服务器端代码,您应该在浏览器呈现它时发布相关的选定元素HTML标记。现在很容易理解什么是从您的服务器端代码的HTML呈现,但因为我不是一个ASP人,这就要求我头脑猛冲...... :) –