Mootools - 获取表单的第一个输入,选择等项目

时间:2010-06-24 15:33:32

标签: javascript mootools

我需要从表单中获取第一个元素,可以是选择,文本,广播等。我可以使用以下内容获取所有元素:

$('myformcontainer').getElement('form').getElements('select,input[type=text]');

这将返回我的所有表单元素,但问题是项目按标签类型进行组织(在此示例中;选择项目将位于任何文本字段之前,即使文本字段是第一个)。

如何对此数组进行排序,以便表单中的第一项是第一项?或者,获得它们的更好方法是什么?

顺便说一下,我试过getFirst - 它总是返回null。

1 个答案:

答案 0 :(得分:0)

http://www.jsfiddle.net/EtGKE/

关于标记:

<form id="myform">
    <input type="text" value="bar" name="bar" />
    <select name="sel">
        <option>foo</option>
    </select>
    <input type="text" value="foo" name="foo" />
    <input type="password" />
</form>

代码:

var allEls = document.id('myform').getChildren().filter(function(el) {
    var tag = el.get("tag"), type = el.get("type");
    return tag == "select" || (tag == "input" && type == "text");
});

这将使项目的自然顺序成为一个数组,使用allElls [0]来引用第一个。

顺便说一下,这个bug已经在mootools 1.3中得到修复,新的光滑选择器引擎不会破坏顺序,所以你的代码实际上会按预期工作。