通过JavaScript检查单选按钮组的值?

Pro*_*ler 59 html javascript forms radio-button

这可能看起来很愚蠢和彻头彻尾的愚蠢,但我似乎无法弄清楚如何通过JavaScript检查我的HTML表单中的单选按钮组的值.我有以下代码:

<input type="radio" id="genderm" name="gender" value="male" />
<label for="genderm">Male</label>
<input type="radio" id="genderf" name="gender" value="female" />
<label for="genderf">Female</label>
Run Code Online (Sandbox Code Playgroud)

如何gender通过JavaScript 检索值?

dar*_*elf 151

如果你想避免框架(我几乎总是想做),请使用document.querySelector().

document.querySelector('input[name="gender"]:checked').value
Run Code Online (Sandbox Code Playgroud)

  • 这需要更多的upvotes,`.querySelector()`是解决这么多jQuery问题的香草答案...... (8认同)
  • 这个答案让我很抱歉,社区或版主以后无法更改问题的答案。当然,对所选择的答案(对参与该决定的两个人)给予应有的尊重。 (4认同)
  • 这是第一次,我以前从未登录,只是为了给某人投票. (3认同)
  • @误解在这里。必须登录才能投票 (2认同)

Ant*_*ony 85

在纯Javascript中:

var genders = document.getElementsByName("gender");
var selectedGender;

for(var i = 0; i < genders.length; i++) {
   if(genders[i].checked)
       selectedGender = genders[i].value;
 }
Run Code Online (Sandbox Code Playgroud)

更新

在没有循环的纯Javascript中,使用更新的(可能还没有支持)RadioNodeList:

var form_elements = document.getElementById('my_form').elements;
var selectedGender = form_elements['gender'].value;
Run Code Online (Sandbox Code Playgroud)

唯一的问题RadioNodeList是只有HTMLFormElement.elementsor HTMLFieldSetElement.elements属性返回,所以你必须有一些表格或字段集的标识符,无线电输入被包装进去才能抓住它.

  • 另外一个用于回答标题而不提供jQuery答案. (39认同)

gdo*_*ica 75

如果你使用像jQuery这样的javascript库,那很容易:

alert($('input[name=gender]:checked').val());
Run Code Online (Sandbox Code Playgroud)

此代码将选择checked带有gender名称的输入,并获取它value.简单不是吗?

现场演示

  • 问题是"Javascript",而不是"jQuery". (39认同)
  • 好吧,我遇到了这个问题寻找一个Javascript解决方案,问题是没有标记jQuery,当我读到它没有提到jQuery的问题时,我不认为接受的答案应该依赖于jQuery.但是,这就是人群的力量,你知道;)对于你帮助这个答案的所有其他人来说,我自己的投票不会有太大变化:) (5认同)
  • @MattiSG,自从它被接受后,我猜这有助于提问者(以及其他许多人)...... (2认同)
  • 那时候JQuery还可以。 (2认同)

gid*_*eon 8

要获得价值,您可以这样做:

document.getElementById("genderf").value;
Run Code Online (Sandbox Code Playgroud)

但要检查,是否选中或选择了单选按钮:

document.getElementById("genderf").checked;
Run Code Online (Sandbox Code Playgroud)


Chr*_*ith 7

如果您将表单元素包装在带有 name 属性的表单标签中,您可以使用 document.formName.radioGroupName.value 轻松获取值。

<form name="myForm">
    <input type="radio" id="genderm" name="gender" value="male" />
    <label for="genderm">Male</label>
    <input type="radio" id="genderf" name="gender" value="female" />
    <label for="genderf">Female</label>
</form>

<script>
    var selected = document.forms.myForm.gender.value;
</script>
Run Code Online (Sandbox Code Playgroud)