0

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

4

5 回答 5

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
    });
});
于 2012-12-05T16:33:48.973 回答
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 后触发 change 事件的区别。About your second question - Using keyboard the 'change' event will be triggered when select will lose focus ('blur').

于 2012-12-05T16:35:04.800 回答
0

定义 CheckBox 控件时,使用 disabled 属性默认禁用它。这样它就已经被禁用了,并且不需要添加更多的javascript来从一开始就禁用它。

它看起来像这样:

@Html.CheckBoxFor(model => model.IsCheckBox, new { @disabled = "true" })
于 2012-12-05T16:35:26.650 回答
0

您的代码似乎有点不正确,这取决于您的需要,因为您在更改该下拉列表时调用禁用函数,您需要像这样在 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

}
}

希望能帮助到你!!!

于 2012-12-05T18:08:26.130 回答
0
$(function() {
    var $cb = $('#checkboxId');
    $('#dropdownlistId').change(function() {
        if (this.value == '1st option') {
          $cb.attr('disabled', disabled);
        } else {
          $cb.removeAttr('disabled', disabled);
        }
    }).trigger('change');
});

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

于 2012-12-08T14:48:04.803 回答