我需要从表单中获取第一个元素,可以是选择,文本,广播等。我可以使用以下内容获取所有元素:
$('myformcontainer').getElement('form').getElements('select,input[type=text]');
这将返回我的所有表单元素,但问题是项目按标签类型进行组织(在此示例中;选择项目将位于任何文本字段之前,即使文本字段是第一个)。
如何对此数组进行排序,以便表单中的第一项是第一项?或者,获得它们的更好方法是什么?
顺便说一下,我试过getFirst - 它总是返回null。
答案 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中得到修复,新的光滑选择器引擎不会破坏顺序,所以你的代码实际上会按预期工作。