【问题标题】:get value of checked radio button with jquery使用 jquery 获取选中的单选按钮的值
【发布时间】:2016-07-28 13:06:14
【问题描述】:

我想在更改时获取所选单选字段的值。如果选择的值为Admin,我想禁用ID为permissions_forms的字段组,并且应该选中其中的所有复选框。否则,如果值不是Admin,则应启用它们。

我试图获取值,但更改功能在我的情况下不起作用。 有人可以帮我吗?这里是Jsfiddle

这是 HTML 代码:

<ul class="radio" id="role">
  <li>
    <input id="role-0" name="role" type="radio" value="User">
    <label for="role-0">User</label>
  </li>
  <li>
    <input checked="" id="role-1" name="role" type="radio" value="Admin">
    <label for="role-1">Admin</label>
  </li>
</ul>
<br/><br/><br/><br/>
<ul class="checkbox" id="permissions_forms">
  <li>
    <input checked="" id="diagnsosis_forms-0" name="diagnsosis_forms" type="checkbox">
    <label for="diagnsosis_forms-0"> Checkbox enable when admin selected</label>
  </li>
  <li>
    <input checked="" id="diagnsosis_forms-1" name="diagnsosis_forms" type="checkbox" >
    <label for="diagnsosis_forms-1"> Checkbox enable when admin selected</label>
  </li>
</ul>

还有 jQuery 代码:

$('#role').change(function() {
  selected = $('input[name=role]:checked').val();
  if (selected == "Admin") {
    alert('Admin');
    $("#permissions_forms :input").attr("disabled", true);
    $("#permissions_forms").parent().siblings().find(':checkbox').attr('checked', this.checked);
  }
  else{
  $("#permissions_forms :input").attr("disabled", false);
  }
});

【问题讨论】:

  • 旁注,ID必须是唯一的
  • 你不想要.attr('checked')你想要.is(':checked')
  • 或者用属性代替attr。

标签: javascript jquery html input


【解决方案1】:

类或 ID?

不要将相同的 id 分配给多个元素。 ID 应该是唯一的。改用类。

<div id="im-unique">Earth</div>

<div class="im-not-unique">Star 1</div>
<div class="im-not-unique">Star 2</div>

如何使用 jquery 切换属性disabledchecked

如果选择的值为 Admin,我想禁用 ID 为 permissions_forms 的字段组,并且应选中其中的所有复选框。

$checkboxes.prop({ "disabled": true, 'checked': true}); 将禁用并选中复选框。

为什么是prop 而不是attr

来自 jquery 的文档:

要检索和更改 DOM 属性,例如表单元素的选中、选择或禁用状态,请使用 .prop() 方法。

function onChange() {
  var selected = $('input[name=role]:checked').val();
  var $checkboxes = $("#diagnsosis_forms-0, #diagnsosis_forms-1", "#permissions_forms");
  if (selected == "Admin") {
    $checkboxes.prop({ "disabled": true, 'checked': true});
  }
  else {
    $checkboxes.prop("disabled", false);
  }
}
onChange()
$('#role').change(onChange);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="radio" id="role">
  <li>
    <input id="role-0" name="role" type="radio" value="User" class="">
    <label for="role-0">User</label>
  </li>
  <li>
    <input checked="" id="role-1" name="role" type="radio" value="Admin">
    <label for="role-1">Admin</label>
  </li>
</ul>
<br/><br/><br/><br/>
<ul class="checkbox" id="permissions_forms">
  <li>
    <input checked="" id="diagnsosis_forms-0" name="diagnsosis_forms" type="checkbox">
    <label for="diagnsosis_forms-0"> Checkbox enable when admin selected</label>
  </li>
  <li>
    <input checked="" id="diagnsosis_forms-1" name="diagnsosis_forms" type="checkbox" >
    <label for="diagnsosis_forms-1"> Checkbox enable when admin selected</label>
  </li>
</ul>

【讨论】:

  • 非常感谢您的回答和您的时间。我只有一个小细节,因为在复选框上我无法添加一个类:diagnsosis_forms-0,没有它,代码不起作用?有什么想法吗?
  • 已更新。您可以使用$('#id') 按id 获取元素,或使用$('.class') 按类获取元素。
  • 不。请仔细查看代码。现在他们是id="diagnsosis_forms-0"id="diagnsosis_forms-1",不再是类。
猜你喜欢
  • 2015-12-26
  • 1970-01-01
  • 2012-01-27
  • 1970-01-01
  • 2016-05-08
  • 2013-10-14
  • 1970-01-01
  • 2016-12-11
相关资源
最近更新 更多