来自带有许多类似组的已检查无线电组的jquery值

时间:2015-11-03 00:25:26

标签: jquery radio-button

我有可变数量的类似无线电组,我需要通过类顺序循环它们并输出所选值。 JS小提琴如下。我意识到我可以通过使用#ID而不是.Class直接找到它,但是没有所有细节,我需要走这条路。

在创建问题的过程中,我发现b数组的长度是9,所以为了获得第二组我使用b [2 *(组中的#radios)],但这看起来有点像hackish。还有其他推荐吗?

<div id="1">
<input type = "radio" name="a0" value="1" class="a" checked="checked" >1</input>
<input type = "radio" name="a0" value="2" class="a">2</input>
<input type = "radio" name="a0" value="3" class="a">3</input>
<div>
<div id="2">
<input type = "radio" name="a1" value="1" class="a">1</input>
<input type = "radio" name="a1" value="2" class="a" checked="checked">2</input>
<input type = "radio" name="a1" value="3" class="a">3</input>
<div>
<div id="3">
<input type = "radio" name="a2" value="1" class="a">1</input>
<input type = "radio" name="a2" value="2" class="a">2</input>
<input type = "radio" name="a2" value="3" class="a" checked="checked">3</input>
<div>
<button onclick="getValue();">Get values</button>

<script>
function getValue() {
var b = $(".a");
alert( $('input:radio[name=' + $(b[2*3]).attr("name") + ']:checked').val() );    

}


</script>

https://jsfiddle.net/cycle4passion/6c0q0kum/1/

3 个答案:

答案 0 :(得分:0)

您可以使用jQuery的$.each函数进行迭代。

function getValue() {
    $("input:radio.a:checked").each(function () {
        console.log(this);
    }); 
}

fiddle

jQuery each documentation

答案 1 :(得分:0)

如果你对一系列已检查的输入感到满意:

// iterate over the <input> elements of
// class 'a' and which are checked,
// forming a map:
var checked = $('input.a:checked').map(function () {

    // return the value of the current <input>
    // of the collection of elements:
    return this.value;

// convert the map to an Array:
}).get();

console.log(checked); // ["1", "2", "3"];

如果您想生成一个对象,其中名称是键,输入的值是键值:

// create an Object:
var checked = {};

// iterate, using each(), over the checked
// inputs of class-name 'a':
$('input.a:checked').each(function () {

    // setting a property (this.name) on
    // the named Object (checked), and
    // setting its value to the <input>
    // value (this.value):
    checked[this.name] : this.value;
});

console.log(checked); // { 'a0' : "1", 'a1' : "2", 'a2' : "3" }

参考文献:

答案 2 :(得分:0)

我发现找到封闭的div更加直截了当,每个div都持有无线电组并选择如下:

第二组:

$(b[1]).children('input[type=radio]:checked').val()

包括JSFiddle。 https://jsfiddle.net/cycle4passion/6c0q0kum/5/