首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择多个无线电输入的Jquery

选择多个无线电输入的Jquery
EN

Stack Overflow用户
提问于 2014-09-23 19:57:00
回答 3查看 48关注 0票数 0

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

代码语言:javascript
复制
  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. 将它们的值添加到以名称为键的vals字典中
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-23 20:00:35

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

代码语言:javascript
复制
$('input:radio[name^=radio]').click(function() {
  vals[$(this).attr("name")] = $(this).val();
 });
票数 4
EN

Stack Overflow用户

发布于 2014-09-23 20:04:56

像这样的事情应该可以做到

代码语言:javascript
复制
// 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();
});
票数 1
EN

Stack Overflow用户

发布于 2014-09-23 20:09:25

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

JS

代码语言:javascript
复制
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();
    }
});

在每次单击时,它将生成一个新对象,并检查每个收音机的所有名称/值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26003679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档