根据下拉列表禁用CheckBox

时间:2012-12-05 16:29:42

标签: javascript asp.net-mvc asp.net-mvc-3 razor

我正在使用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:/

5 个答案:

答案 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');
});

现在就像一个魅力 谢谢你们