2010-03-06 16 views
8

Domanda 1: DatoMootools - come ottenere valore del tipo di ingresso radio selezionata, dal suo nome

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

In Mootools, come faccio a tornare "2" dato un input di "foo", partendo dal presupposto che il è stato fatto clic sul secondo pulsante di opzione.


Domanda 2: (è collegato) - Dato simile checkbox ingressi, come faccio a tornare sia una matrice o virgola elenco dei valori controllato separati?

Sto volendo inviare i valori di questi ingressi tramite Request.JSON, passandolo come parametro GET.

risposta

17

Supponendo che il nome della casella di controllo è "pippo", per ottenere la voce radio selezionata, è possibile utilizzare:

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

Ciò restituisce un array con 1 elemento, essendo il valore degli elementi selezionati.

Oppure estendere il prototipo di una matrice e aggiungere un metodo getFirst().

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

Poi si potrebbe fare questo:

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

Allo stesso modo, per ottenere tutte le caselle di controllo controllati, uso:

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

Il doppio dollaro è usato ($$) la funzione di selezionare più elementi con un selettore CSS. Quindi una mappa (parte della classe Array) può essere applicata a quegli elementi per ottenere solo i valori necessari.

Si può leggere di più su questi pseudo-selettori a http://mootools.net/docs/core/Utilities/Selectors

+3

per l'uso singolare, perché non solo usa 'formel.getElement (" input [nome = foo]: controllato ")' - non c'è bisogno di trattare gli array qui. Prenderò questo approccio e il suo più scalabile e loop attraverso più radio con questo come richiamata. –

+3

Ho usato $$ come OP aveva solo il nome del campo nella domanda. Ma se l'elemento del form è disponibile o se è noto, allora possiamo anche usare '$ ('formID'). GetElement ('input [nome = foo]: controllato"). Value' – Anurag

+0

Grazie. Ho usato '$ ('formid') getElement ('ingresso [name = foo]:. controllato ").valore' per la radio (che potrebbe avere solo un valore) e '$$ ('# formID input [nome = foo]: selezionato')' per le caselle di controllo. – philfreo

2

Ecco come ottenere il valore della radio:

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

Abbastanza facile ....

-1

nulla non funziona in Firefox 3.15.16 tranne espressione:

var radio = $ ('adminForm'). GetElements ("input [nome = 'pubblicato'] "). filter (function (e) {if (e.checked) return e; }) [0] .value;


Scusa per l'inglese !!!

0

Il codice precedente funzionava bene in Firefox, ma a IE non piaceva affatto. Dopo un po 'di ritocchi è nato questo orribile lavoro.

Add onchange = "toggleChecked (questo)" per ciascuna delle radio e quindi aggiungere questa funzione in voi JS il file

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

e poi a leggere il pulsante che è stato selezionato

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

Ora se qualcuno riuscisse a trovare una soluzione migliore per l'IE, lo apprezzerei.

6

Non c'è bisogno di

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

Basta usare:

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

La risposta migliore è da weiqianglufromchina, ma ha questo errore

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

Questo dovrebbe essere

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

testato su firefox, chrome, explorer. MooTools 1.2.4/1.3

acclamazioni

+0

sì, questo è il modo di andare http://jsfiddle.net/2JFRh/ – eerne

+0

penso che il problema più profondo è che non vogliono essere restituiti un array, che è ciò che $$() fa – Kristian

1

appena utilizzato questo ultimamente in Mootools 1.11. Io uso:

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

Abbastanza lungo ma funzionante. Provato con FF 3.x

La versione più recente di Mootools può utilizzare una sintassi più breve come le altre risposte fornite.

2

questo funziona per me.

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

Un modo facile per ottenere il valore della radio controllato è:

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

MooTools 1.4.5 - getElement()

Ottiene il primo elemento discendente il cui nome di tag corrisponde al tag fornito. Possono anche essere passati i selettori CSS.

menzionato in precedenza

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

è anche un modo facile per ottenere tutti controllati i valori caselle di controllo, lavorando con 1.4.5 verison

BR

Problemi correlati