2010-06-24 4 views
0

je dois obtenir le premier élément d'une forme, pourrait être une sélection, le texte, la radio etc. Je peux obtenir tous les éléments en utilisant les éléments suivants:Mootools - obtenir la première entrée de formulaire, sélectionnez etc article

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

Et cela retourne tous mes éléments de formulaire, mais le problème est que les articles sont classés par type de balise (dans cet exemple, sélectionner des éléments serait avant un champ de texte, même si le champ de texte est d'abord).

Comment puis-je trier ce tableau de sorte que le premier élément de la forme est d'abord? Ou, une meilleure façon de les obtenir?

BTW, j'ai essayé getFirst - elle retourne toujours null.

Répondre

0

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

sur le balisage de:

<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> 

avec le code:

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"); 
}); 

cela, vous obtiendrez l'ordre naturel des éléments comme un tableau, utilisez allElls [0] pour référence le premier.

soit dit en passant, ce bug a été corrigé dans Mootools 1.3 où le nouveau moteur sélecteur lisse ne cassera pas l'ordre pour que votre code sera effectivement fonctionner comme prévu.

+0

"Incidemment, ce bug a été corrigé dans mootools 1.3" - Pour l'instant, oui. –

+0

Brillant, merci – Ashley

Questions connexes