下拉列表中的jquery值选中禁用复选框

时间:2011-07-16 03:07:10

标签: jquery select checkbox drop-down-menu

我正在尝试使用jquery来禁用复选框,当下拉菜单的选定值是0以外的任何值时。我的问题是当我选择具有0值的项目时,复选框被禁用并获取复选框禁用在取消选中复选框之前,我必须至少选择两个或更多值。

我的代码示例如下:

example code at js fiddle

当所选值为0时,我希望复选框和下拉菜单启用,当所选值不是0时,我想禁用该复选框。无论我是从第一行,底行,行还是中间行开始,我也希望它能工作。

3 个答案:

答案 0 :(得分:2)

如果我对你的问题的理解是正确的,那应该这样做:

$("select").change(function() {
    $(this).closest("td").prev().find(":checkbox").prop("disabled", $(this).val() !== "0");
});

$(":checkbox").change(function() {
   $(this).parent().next().find("select").prop("disabled", this.checked);
});

Your updated fiddle.

答案 1 :(得分:1)

试试这个(works for me):

$("select").change(function() {
  var $this = $(this),
      $checkbox = $this.parent().prev().find("input");

  if ($this.val() != 0) {
    $checkbox.attr("disabled", true);
  } else {
    $checkbox.removeAttr("disabled");
  }
});

$(":checkbox").change(function() {
  var $this = $(this),
      $select = $this.parent().next().find("select");

  if ($this.is(":checked")) {
    $select.attr("disabled", true);
  } else {
    $select.removeAttr("disabled");
  }
});

答案 2 :(得分:0)

这是因为在“更改”事件中,您获得的值是在实际完成更改之前,因此用户“现在”进行的更改直到下次事件触发时才会显示。

您希望使用类似onblur,onmouseup或onkeyup的内容在更改后通知您要更改复选框的属性。