2010-03-06 12 views
8

Pregunta 1: DadaMootools - cómo obtener el valor de tipo de entrada de radio seleccionada, de su nombre

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

En Mootools, ¿cómo vuelvo "2" dada una entrada de "foo", suponiendo que la Se hizo clic en el segundo botón de radio.


Pregunta 2: (que está relacionado) - Dada similares casilla entradas, ¿cómo vuelvo ya sea una matriz o lista separada por comas de los valores controladas separados?

Estoy queriendo enviar los valores de estas entradas a través de Request.JSON, pasándolo como un parámetro GET.

Respuesta

17

Suponiendo que el nombre de la casilla de verificación es "foo", para obtener el elemento de radio seleccionada, puede utilizar:

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

Esto devuelve una matriz con 1 punto, siendo el valor de los elementos seleccionados.

O simplemente extender el prototipo de una matriz, y añadir un método GetFirst().

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

Posteriormente, se podría hacer esto:

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

Del mismo modo, para obtener toda comprobado casillas de verificación, utilice:

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

La doble dólar se utiliza ($$) para seleccionar la función múltiple elementos con un selector de CSS. Luego, se puede aplicar un mapa (parte de la clase Array) a esos elementos para obtener solo los valores necesarios.

Puede leer más acerca de estos pseudo-selectores en http://mootools.net/docs/core/Utilities/Selectors

+3

para el uso del singular, por qué no sólo use 'formel.getElement (" input [name = foo]: checked ")' - no hay necesidad de arreglos de arreglos aquí. Tomaría ese enfoque y es más escalable y recorrerá varias radios con esto como devolución de llamada. –

+3

utilicé $$ ya que OP solo tenía el nombre del campo en la pregunta. Pero si el elemento del formulario está disponible o es id se conoce, entonces podemos también usar '$ ('formid') getElement ('input [name = foo]: comprueba")... Valor' – Anurag

+0

Gracias Solía ​​'$ ('formID'). getElement ('input [name = foo]: checked').value' para la radio (que solo podría tener un valor) y '$$ ('# formID input [name = foo]: checked')' para las casillas de verificación. – philfreo

2

Aquí es cómo conseguir el valor de la radio:

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

Muy fácil ....

-1

nada no funciona en Firefox 3.15.16 excepto expresión:

var radio = $ ('adminForm'). GetElements ("entrada [nombre = 'publicado'] "). filter (función (e) {if (e.checked) return e; }) [0] .value;


¡¡¡Lo sentimos por el inglés !!!

0

El código anterior funciona bien en Firefox pero IE no le gustó en absoluto. Después de un poco de retoques surgió este horrible trabajo.

Agregar onchange = "toggleChecked (este)" a cada una de las radios y luego añadir esta función en que JS archivo de

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

y después de leer qué botón ha sido seleccionado

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

Ahora, si alguien pudiera encontrar una mejor solución de IE, lo agradecería.

6

No hay necesidad de

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

sólo tiene que utilizar:

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

La mejor respuesta es de weiqianglufromchina, pero tiene este error

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

Ésta debe ser

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

probado en firefox, cromo, explorador. mootools 1.2.4/1.3

aplausos

+0

sí, ese es el camino a seguir http://jsfiddle.net/2JFRh/ – eerne

+0

Creo que el problema más profundo es que no quieren que se les devuelva una matriz, que es lo que hace $$() – Kristian

1

acaba de utilizar éste últimamente en Mootools 1.11. Yo uso:

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

Bastante largo pero funciona. Tratado con 3.x FF

más reciente versión de Mootools puede utilizar una sintaxis más corta que las otras respuestas proporcionadas.

2

esto funciona para mí.

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

manera fácil para obtener el valor de la radio es comprobado:

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

MooTools 1.4.5 - getElement()

Obtiene el primer elemento descendiente cuyo nombre coincide con la etiqueta etiqueta proporcionada. Los selectores de CSS también pueden ser aprobados.

Se mencionó anteriormente

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

es también camino fácil para lograr que todos los valores de casillas de verificación marcada, trabajando con verison 1.4.5

BR

Cuestiones relacionadas