问题1:给定
<input type="radio" name="foo" value="1" />
<input type="radio" name="foo" value="2" />
<input type="radio" name="foo" value="3" />
在Mootools中,假设单击了第二个单选按钮,如果输入“foo”,如何返回“2”。
问题2 :(它是相关的) - 给定类似的复选框输入,如何返回已检查值的数组或逗号分隔列表?
我想通过Request.JSON提交这些输入的值,并将其作为GET参数传递。
答案 0 :(得分:18)
假设复选框的名称为“foo”,要获取所选的电台项目,您可以使用:
var values = $$('input[name=foo]:checked').map(function(e) { return e.value; });
这将返回一个包含1个项目的数组,它是所选元素的值。
或者只是扩展一个Array的原型,然后添加一个getFirst()方法。
Array.implement({
getFirst: function() {
if(this.length == 0) {
return null;
}
return this[0];
}
});
然后你可以这样做:
var value = $$('input[name=foo]:checked').getFirst().value;
同样,要获取所有选中的复选框,请使用:
var values = $$('input[name=foo]:checked').map(function(e) { return e.value; });
double dollar($$)函数用于使用CSS选择器选择多个元素。然后可以将一个map(Array类的一部分)应用于这些元素以获得所需的值。
了解有关这些伪选择器的更多信息答案 1 :(得分:6)
不需要
var value = $$('input[name=foo]:checked').getFirst().value;
只需使用:
var value = $$('input[name=foo]:checked')[0].get('value');
答案 2 :(得分:3)
获取收音机价值的简便方法是:
$('formID').getElement('input[name=foo]:checked').get('value');
获取第一个后代元素,其标记名称与提供的标记匹配。 CSS选择器也可以传递。
早些时候提到过
$$('input[name=foo]:checked').get('value');
也是获取所有选中复选框值的简便方法,使用1.4.5 verison
BR
答案 3 :(得分:2)
以下是如何获取无线电的价值:
var value =$$('input[name=type]:checked').get('value');
非常容易....
答案 4 :(得分:2)
最佳答案来自weiqianglufromchina,但有此错误
$$('input[name=type]:checked').get('value');
这应该是
$$('input[name=RADIONAME]:checked').get('value');
在firefox,chrome,explorer上测试过。 mootools 1.2.4 / 1.3
欢呼声
答案 5 :(得分:2)
这适合我。
$$('input[name=foo]:checked').pick().get('value');
答案 6 :(得分:1)
最近在Mootools 1.11中使用过这个。我用:
var value = $$('input[name=foo]).filter(function(el) {
return el.getProperty("checked")
})[0];
很长但很努力。试过FF 3.x
更新版本的Mootools可以使用更短的语法作为提供的其他答案。
答案 7 :(得分:0)
以上代码在Firefox中运行良好,但IE根本不喜欢它。经过一番调整后,我想到了这个可怕的工作。
将onchange =“toggleChecked(this)”添加到每个无线电,然后将此功能添加到您的JS文件中
function toggleChecked(el) {
el.checked = !el.checked;
el.checked = !el.checked;
}
然后阅读选择了哪个按钮
var selectFoo;
$$('input[name=foo]').each(function (el){
if (el.checked == true) {
selectFoo = el.value;
}
});
现在如果有人能想出更好的IE解决方案,我会很感激。
答案 8 :(得分:-1)
除了表达式
之外,Firefox 3.15.16中没有任何功能var radio = $('adminForm')。getElements(“input [name ='published']”)。filter(function(e){if(e.checked)return e;})[0] .value ;
抱歉英文!!!