在页面上查找每个广播组

时间:2015-02-24 19:11:50

标签: javascript jquery

我有多个这样的广播组:

<input type="radio" name="sex" value="male">
<input type="radio" name="sex" value="female">

<input type="radio" name="length" value="tall">
<input type="radio" name="length" value="short">

等等..

我的目标是找出页面上的所有无线电组。所以在这种情况下,它会返回sex, length

到目前为止,我能够获得所有输入信息,但我不确定从何处开始。

var radio_groups = [];
$("input[type=radio]").each(function(e){
    //get the name
    var name = this.attr('name');
});

5 个答案:

答案 0 :(得分:1)

如果你想要的只是一个具有键名称的对象可以:

var radios ={};
$("input[type=radio]").each(function(e){
    radios[this.name] = true;
});

console.dir(radios);
/* if want to convert to array */
var radioArray= Object.keys(radios);

DEMO

答案 1 :(得分:0)

使用indexOf()检查您是否已经看过该名称:

&#13;
&#13;
var radio_groups = [];

$("input[type=radio]").each(function(e) {
  var name = $(this).attr('name');

  if (radio_groups.indexOf(name) < 0)
    radio_groups.push(name);
});

console.log(radio_groups);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="radio" name="sex" value="male">
<input type="radio" name="sex" value="female">

<input type="radio" name="length" value="tall">
<input type="radio" name="length" value="short">
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您的选择器选择名称属性以group开头的所有输入元素,它不会过滤掉唯一名称

如果您只想打印不同的组名,那么

var group = {};
$('input[name=*][type="radio"]').each(function (index) {
    var name = this.name;
    var elemValue = $(this).val();
    if (!group[name]) {
        group[name] = true;
        console.log(elemValue);
    }
});

答案 3 :(得分:0)

如果您想获取复选框的值,您可能需要考虑将收音机包装在表单标签中。像这样:

<form id="f1">
    <input type="radio" name="sex" value="male">
    <input type="radio" name="sex" value="female">
    <input type="radio" name="length" value="tall">
    <input type="radio" name="length" value="short">
</form>

然后你就可以得到每个人的价值:

var lenghtVal = document.forms[0].length.value;
var sexVal = document.forms[0].sex.value;

根据您的具体情况替换表单数组的索引。

答案 4 :(得分:0)

试试这个:

http://jsfiddle.net/76bhs444/1/

点击f12并在控制台中查看。这应该是你想要的。

// get all radio names
  var radio_groups = $("input[type=radio]").map(function(e){
    return $(this).attr('name');
  }).get();
  console.log(radio_groups);
// filter duplicates
  radio_groups = $.grep(radio_groups, function(value, index) {
    return $.inArray(value, radio_groups) === index;
  });
  console.log(radio_groups);