2010-03-06 4 views
8

Question 1: Compte tenuMootools - comment obtenir la valeur du type d'entrée radio sélectionnée, à partir de son nom

<input type="radio" name="foo" value="1" /> 
<input type="radio" name="foo" value="2" /> 
<input type="radio" name="foo" value="3" /> 

En Mootools, comment puis-je retourner « 2 » donné une entrée de « foo », en supposant que le deuxième bouton radio a été cliqué.


Question 2: (il est lié) - Compte tenu de la même entrées de cases à cocher, comment puis-je retourner soit un tableau ou séparées par des virgules liste des valeurs vérifiées?

Je souhaite soumettre les valeurs de ces entrées via Request.JSON, en les passant en paramètre GET.

Répondre

17

En supposant que le nom de la case à cocher est « foo », pour obtenir l'élément radio sélectionné, vous pouvez utiliser:

var values = $$('input[name=foo]:checked'​​​​​​​​​​​​​​).map(function(e) { return e.value; }); 

Ce retourne un tableau avec 1 point, étant la valeur des éléments sélectionnés.

Ou simplement étendre le prototype d'un tableau et ajouter une méthode getFirst().

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

Ensuite, vous pouvez le faire:

var value = $$('input[name=foo]:checked').getFirst().value; 

De même, pour obtenir toutes les cases à cocher cochée, utilisez:

var values = $$('input[name=foo]:checked'​​​​​​​​​​​​​​).map(function(e) { return e.value; }); 

Le double dollar ($$) fonction permet de sélectionner plusieurs éléments avec un sélecteur CSS. Ensuite, une carte (partie de la classe Array) peut être appliquée à ces éléments pour obtenir la ou les valeur (s) nécessaire (s).

Vous pouvez en savoir plus sur ces pseudo-sélecteurs à http://mootools.net/docs/core/Utilities/Selectors

+3

pour une utilisation unique, pourquoi pas seulement utilisez 'formel.getElement (" input [nom = foo]: coché ")' - pas besoin de traiter les tableaux ici. je prendrais cette approche et son plus évolutif et boucle à travers plusieurs radios avec ceci comme rappel. –

+3

J'ai utilisé $$ car l'OP n'avait que le nom du champ dans la question. Mais si l'élément de formulaire est disponible ou son id est connu, alors nous pouvons aussi utiliser '$ ('formID'). GetElement ('entrée [nom = foo]: coché"). Value' – Anurag

+0

Merci. 'formID'). getElement ('input [nom = foo]: cochée ").value' pour la radio (qui ne peut avoir qu'une seule valeur) et '$$ ('# formID input [nom = foo]: coché')' pour les cases à cocher. – philfreo

2

Voici comment obtenir la valeur de la radio:

var value =$$('input[name=type]:checked').get('value'); 

Assez facile ....

-1

ne fonctionne pas dans Firefox 3.15.16 sauf expression:

var radio = $ ('adminForm'). GetElements ("entrée [nom = 'publié'] "). filter (fonction (e) {if (e.checked) return e; }) [0] .value;


Désolé pour l'anglais !!!

0

Le code ci-dessus a bien fonctionné dans Firefox, mais IE n'a pas aimé du tout. Après un peu de peaufinage est venu avec ce travail horrible.

Ajouter onchange = "toggleChecked (this)" à chacune des radios, puis ajoutez cette fonction dans votre fichier JS

function toggleChecked(el) { 
    el.checked = !el.checked; 
    el.checked = !el.checked; 
} 

puis à lire ce qui touche a été sélectionnée

var selectFoo; 
$$('input[name=foo]').each(function (el){ 
    if (el.checked == true) { 
     selectFoo = el.value; 
    } 
}); 

Maintenant, si quelqu'un pouvait proposer une meilleure solution IE, je l'apprécierais.

6

Pas besoin de

var value = $$('input[name=foo]:checked').getFirst().value; 

utiliser Just:

var value = $$('input[name=foo]:checked')[0].get('value'); 
2

La meilleure réponse est de weiqianglufromchina, mais a cette erreur

$$('input[name=type]:checked').get('value'); 

Cela devrait être

$$('input[name=RADIONAME]:checked').get('value'); 

testé sur firefox, chrome, explorer. Mootools 1.2.4/1.3

acclamations

+0

oui, c'est la voie à suivre http://jsfiddle.net/2JFRh/ – eerne

+0

Je pense que le plus profond problème est qu'ils ne veulent pas être renvoyé un tableau, qui est ce que fait $$() – Kristian

1

juste utilisé celui-ci dans ces derniers temps Mootools 1.11. J'utilise:

var value = $$('input[name=foo]).filter(function(el) { 
    return el.getProperty("checked") 
})[0];   

Assez long mais fonctionnel. Essayé avec FF 3.x

Une version plus récente de Mootools peut utiliser une syntaxe plus courte que les autres réponses fournies.

2

Cela fonctionne pour moi.

$$('input[name=foo]:checked').pick().get('value'); 
3

moyen facile pour obtenir la valeur de la radio est vérifiée:

$('formID').getElement('input[name=foo]:checked').get('value'); 

MooTools 1.4.5 - getElement()

Obtient le premier élément descendant dont le nom correspond à la balise étiquette fournie. Les sélecteurs CSS peuvent également être transmis.

mentionné plus tôt

$$('input[name=foo]:checked').get('value'); 

est également moyen facile pour obtenir tous les vérifier les valeurs de cases à cocher, en collaboration avec 1.4.5 verison

BR

Questions connexes