我的JS程序有一些奇怪的问题。我有这个工作正常,但由于某种原因,它不再工作。我只是想找到单选按钮的值(其中一个被选中)并将其返回给一个变量。由于某种原因,它总是返回undefined。

这是我的代码:

function findSelection(field) {
    var test = 'document.theForm.' + field;
    var sizes = test;

    alert(sizes);
        for (i=0; i < sizes.length; i++) {
            if (sizes[i].checked==true) {
            alert(sizes[i].value + ' you got a value');     
            return sizes[i].value;
        }
    }
}

submitForm:

function submitForm() {

    var genderS =  findSelection("genderS");
    alert(genderS);
}

HTML:

<form action="#n" name="theForm">

    <label for="gender">Gender: </label>
    <input type="radio" name="genderS" value="1" checked> Male
    <input type="radio" name="genderS" value="0" > Female<br><br>
    <a href="javascript: submitForm()">Search</A>
</form>

当前回答

这里是一个没有使用Checked=" Checked "属性的无线电示例

function test() {
var radios = document.getElementsByName("radiotest");
var found = 1;
for (var i = 0; i < radios.length; i++) {       
    if (radios[i].checked) {
        alert(radios[i].value);
        found = 0;
        break;
    }
}
   if(found == 1)
   {
     alert("Please Select Radio");
   }    
}

演示:http://jsfiddle.net/ipsjolly/hgdWp/2/[点击查找,不选择任何电台]

来源(来自我的博客):http://bloggerplugnplay.blogspot.in/2013/01/validateget-checked-radio-value-in.html

其他回答

从jQuery 1.8开始,查询的正确语法是

$('input[name="genderS"]:checked').val();

不是$('输入[@ name = "性别"]:检查”).val ();它在jQuery 1.7中工作(使用@)。

把Ed Gibbs的答案代入一个一般函数:

function findSelection(rad_name) {
    const rad_val = document.querySelector('input[name=' + rad_name + ']:checked');
    return (rad_val ? rad_val.value : "");
}

然后你可以执行findSelection("性别");

我知道这是非常古老的,但现在可以在一行中完成

function findSelection(name) {
    return document.querySelector(`[name="${name}"]:checked`).value
}

这适用于任何浏览器。

document.querySelector('input[name="genderS"]:checked').value;

这是获取任何输入类型值的一种简单方法。 你也不需要包含jQuery路径。

编辑: 正如Chips_100所说,你应该使用:

var sizes = document.theForm[field];

直接不使用测试变量。


旧的回答:

你不应该这样评估吗?

var sizes = eval(test);

我不知道这是如何工作的,但对我来说,你只是复制了一个字符串。