我正在使用DropDownLists和CheckBoxes等asp.net mvc3应用程序。
如果选择了下拉列表的已定义选项,我写了一个javascript来禁用CheckBox:
$(function() {
$('#dropdownlistId').change(function() {
if (this.value == '1st option') {
$('#checkboxId').attr('disabled', disabled);
} else {
$('#checkboxId').removeAttr('disabled', disabled);
}
});
});
这很好用,但脚本只对下拉列表的 更改 作出反应
因此,如果“第一个选项”位于下拉列表的顶部并因此自动选择为默认值,则脚本不会禁用该复选框。仅当用户选择另一个选项并再次选择“第一个选项”时...
请帮帮我:)。
PS:如果我使用键盘切换下拉列表选项而不是鼠标,脚本也不起作用
所以如果你能帮助我改进脚本会非常友好,因为我真的不能做javascript:/
答案 0 :(得分:1)
你可以这样做:
function setCheckBox() {
if (this.value == '1st option') {
$('#checkboxId').attr('disabled', disabled);
} else {
$('#checkboxId').removeAttr('disabled', disabled);
}
}
$(function() {
setCheckBox();//do this on load..
$('#dropdownlistId').change(function() {
setCheckBox();//and on change
});
});
答案 1 :(得分:1)
$(function() {
var $cb = $('#checkboxId');
$('#dropdownlistId').change(function() {
if (this.value == '1st option') {
$cb.prop('disabled', true);
} else {
$cb.prop('disabled', false);
}
}).trigger('change');
});
添加halnderl后触发更改事件的差异。关于你的第二个问题 - 当选择失去焦点('模糊')时,使用键盘会触发'更改'事件。
答案 2 :(得分:0)
定义CheckBox控件时,默认情况下使用disabled属性将其禁用。这样它就会被禁用,并且不需要添加更多的javascript来禁用它。
它看起来像这样:
@Html.CheckBoxFor(model => model.IsCheckBox, new { @disabled = "true" })
答案 3 :(得分:0)
你的代码似乎有点不正确取决于你的需要,因为你在更改那个下拉列表时调用了disable函数你需要在document.ready中写这个
$(document).ready(function () {if(document.getElementById("dropdownlistId").value="1stoption")
{
document.getElementById('checkboxId').style.visibility = 'hidden';
}
else
{//do something whatever you wish here in else condition
}
}
希望它有所帮助!!!
答案 4 :(得分:0)
$(function() {
var $cb = $('#checkboxId');
$('#dropdownlistId').change(function() {
if (this.value == '1st option') {
$cb.attr('disabled', disabled);
} else {
$cb.removeAttr('disabled', disabled);
}
}).trigger('change');
});
现在就像一个魅力 谢谢你们