Mootools - 如何从名称中获取所选无线电输入类型的值

时间:2010-03-06 06:40:27

标签: javascript forms mootools

问题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参数传递。

9 个答案:

答案 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类的一部分)应用于这些元素以获得所需的值。

您可以在http://mootools.net/docs/core/Utilities/Selectors

了解有关这些伪选择器的更多信息

答案 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');

MooTools 1.4.5 - getElement()

  

获取第一个后代元素,其标记名称与提供的标记匹配。 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 ;


抱歉英文!!!