假设我有两个名为radio-1和radio-2的无线电输入,我将它们的输入存储在一个对象中,我最终将使用该对象作为json来发出post请求。
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-3,radio-355。等等。我希望能够将radio-[0-9]+的所有值放入我的val字典中,而不必为它们编写上述代码。
我想到的伪码是:
radio-[0-9]+的收音机vals字典中发布于 2014-09-23 20:00:35
使用jQuery attribute starts with selector为名称以radio开头的所有无线电元素编写单击事件。试试这个:
$('input:radio[name^=radio]').click(function() {
vals[$(this).attr("name")] = $(this).val();
});发布于 2014-09-23 20:04:56
像这样的事情应该可以做到
// 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();
});发布于 2014-09-23 20:09:25
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();
}
});在每次单击时,它将生成一个新对象,并检查每个收音机的所有名称/值。
https://stackoverflow.com/questions/26003679
复制相似问题