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

phi*_*reo 9 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" />
Run Code Online (Sandbox Code Playgroud)

在Mootools中,假设单击了第二个单选按钮,如何在输入"foo"时返回"2".


问题2 :(它是相关的) - 给定类似的复选框输入,如何返回已检查值的数组或逗号分隔列表?

我想通过Request.JSON提交这些输入的值,并将其作为GET参数传递.

Anu*_*rag 18

假设复选框的名称为"foo",要获取所选的单选项,您可以使用:

var values = $$('input[name=foo]:checked'??????????????).map(function(e) { return e.value; });
Run Code Online (Sandbox Code Playgroud)

这将返回一个包含1个项目的数组,即所选元素的值.

或者只是扩展一个Array的原型,并添加一个getFirst()方法.

Array.implement({
    getFirst: function() {
        if(this.length == 0) {
            return null;
        }
        return this[0];
    }
});
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

var value = $$('input[name=foo]:checked').getFirst().value;
Run Code Online (Sandbox Code Playgroud)

同样,要获取所有选中的复选框,请使用:

var values = $$('input[name=foo]:checked'??????????????).map(function(e) { return e.value; });
Run Code Online (Sandbox Code Playgroud)

double dollar($$)函数用于使用CSS选择器选择多个元素.然后可以将一个map(Array类的一部分)应用于这些元素以获得所需的值.

您可以在http://mootools.net/docs/core/Utilities/Selectors上阅读有关这些伪选择器的更多信息.

  • 为了单独使用,为什么不使用`formel.getElement("input [name = foo]:checked")` - 这里不需要数组处理.我采取这种方法,它更具可扩展性,并通过多个无线电循环,以此作为回调. (3认同)
  • 我使用$$作为OP只在问题中有字段名称.但是如果表单元素可用或者它的id已知,那么我们也可以使用`$('formID').getElement('input [name = foo]:checked").value` (3认同)

小智 6

没必要

var value = $$('input[name=foo]:checked').getFirst().value;
Run Code Online (Sandbox Code Playgroud)

只需使用:

var value = $$('input[name=foo]:checked')[0].get('value');
Run Code Online (Sandbox Code Playgroud)