Jquery选择多个无线电输入

时间:2014-09-23 19:57:01

标签: javascript jquery

假设我有两个名为radio-1radio-2的无线电输入,我将他们的输入存储在一个对象中,我最终将其用作json来发布请求。

  vals = {}
  $('input:radio[name=radio-1]').click(function() {
  vals['radio-1'] = $('input:radio[name=radio-1]:checked').val();
  });
  $('input:radio[name=radio-2]').click(function() {
  vals['radio-2'] = $('input:radio[name=radio-2]:checked').val();
  });

例如:val = {'radio-1':1,'radio-2':3}

现在,我说有多个无线电输入,radio-3radio-355。等...我希望能够将radio-[0-9]+的所有值都放入我的val字典中,而不必为每个字典编写如上所示的代码。

我想到的伪代码是:

  1. 查找名称为radio-[0-9]+的所有已点击的广播
  2. 将其值添加到名称为
  3. vals字典中

3 个答案:

答案 0 :(得分:4)

使用jQuery attribute starts with selector为名称以radio开头的所有无线电元素编写click事件。试试这个:

$('input:radio[name^=radio]').click(function() {
  vals[$(this).attr("name")] = $(this).val();
 });

答案 1 :(得分:1)

这样的事情应该这样做

// base object
var myObj = {};

// all radio inputs with a name attribute that starts with radio-
$('input[type="radio"][name*="radio-"]').click(function() {
    // cache your jquery wrapped `this`
    var $this = $(this);
    // push the radio inputs value onto object with $this' name attribute as the key
    myObj[$this.attr('name')] = $this.val();
});

答案 2 :(得分:0)

http://jsfiddle.net/OxyDesign/z6jm8v83/

JS

var vals = {},
    radios = $('input[name^=radio]'),
    radiosLgth = radios.length;

radios.click(function() {
    vals = {};
    for(var i = 0; i < radiosLgth; i++){
        var radioElt = radios.eq(i),
            isChecked = radioElt.is(':checked');
        if(isChecked) vals[radioElt.attr('name')] = radioElt.val();
    }
});

每次点击它都会创建一个新对象,并检查每个无线电的所有名称/值。