Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Seleccionar opción en todos los select

Estas en el tema de Seleccionar opción en todos los select en el foro de Javascript en Foros del Web. Hola, quisiera que me ayudaran en como puedo hacer que todos los select de mi formulario cambien a una option al dar click en un ...
  #1 (permalink)  
Antiguo 05/11/2014, 11:59
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 10 años, 6 meses
Puntos: 0
Seleccionar opción en todos los select

Hola, quisiera que me ayudaran en como puedo hacer que todos los select de mi formulario cambien a una option al dar click en un boton.

ya logre realizarlo pero solo lo hace en 1 y necesito cambiarlo en todos los select de mi formulario o al menos todos los select que tengan el mismo ID"Status", gracias


Código HTML:
<script>

function App() {
    document.getElementById('Status').value = 'App';
}
function Rech() {
    document.getElementById('Status').value = 'Rech';
}
</script>



<button onclick='App()'>Aprobada</button>
<button onclick='Rech()'>Rech</button>

<select name='Status' id='Status'>
		 <option value='ok' selected>ok</option> 
		 <option value='App'>App</option>
		 <option value='Rech'>Rech</option>
		 </select> 
  #2 (permalink)  
Antiguo 05/11/2014, 12:51
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Seleccionar opción en todos los select

Buenas,

No puede haber más de un elemento con el mismo id, por eso getElementById devuelve un elemento como mucho y no varios.

Para poder cambiar varios elementos tendrás que usar clases por ejemplo:

Código HTML:
Ver original
  1. <script type="text/javascript">
  2. function Select(value)
  3. {
  4.     var elements =  document.getElementsByClassName('Status');
  5.     var i;
  6.    
  7.     for (i = 0; i < elements.length; i++)
  8.    {
  9.        elements[i].value = value;
  10.    }
  11. }
  12. <button onclick='Select("App")'>Aprobada</button>
  13. <button onclick='Select("Rech")'>Rech</button>
  14.  
  15. <select name='Status' class='Status'>
  16.          <option value='ok' selected>ok</option>
  17.          <option value='App'>App</option>
  18.          <option value='Rech'>Rech</option>

Si va a usarse en IE8 y versiones anteriores, tienes que utilizar una librería como JQuery para realizar la búsqueda por clase o buscar una versión de la función getElementsByClassName que funcione en estos navegadores.

Un saludo.
  #3 (permalink)  
Antiguo 05/11/2014, 12:57
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Seleccionar opción en todos los select

Deberías de utilizar solo una función para hacer esto, la cual recibiría dos parámetros: El identificador de la lista y el valor a buscar.

Código HTML:
Ver original
  1. <button onclick = "fn('Status', 'App')">Aprobada</button>
  2. <button onclick = "fn('Status', 'Rech')">Rech</button>
  3.  
  4. <select name = 'Status' id = 'Status'>
  5.     <option value='ok' selected>ok</option>
  6.     <option value='App'>App</option>
  7.     <option value='Rech'>Rech</option>

Código Javascript:
Ver original
  1. function fn(id, val){
  2.     var select = document.getElementById(id);  
  3.     for (var i = 0, l = select.options.length; i < l; i++){
  4.         if (select.options[i].value == val){
  5.             select.options[i].selected = true;
  6.             break;
  7.         }
  8.     }
  9. }

Lo que hago es simple. La lista de opciones es la misma que tienes, pero, en los botones al dar clic en cualquiera de ellos, invoco a una función a la cual le paso dos parámetros: El identificador de la lista y el valor a buscar.

En la función, recibo a ambos valores, tomo a la lista por su identificador y, con ayuda de un bucle, busco entre las opciones de la lista el valor que coincida con el que estamos buscando. En caso de encontrarlo, se selecciona la opción correspondiente y se termina el bucle. Por cierto, si planeas trabajar con varias listas, no debes de utilizar el mismo id para todas pues debe de ser un valor único en todo el documento. En su lugar, puedes usar una clase o un array de listas.

Saludos

Edito: La solución de alexg88, me ha dado una idea:

Código Javascript:
Ver original
  1. function fn(clase, valor){
  2.     for (var i = 0, listas = document.querySelectorAll("." + clase), l = listas.length; i < l; listas[i].value = valor, i++);
  3. }

Tomas al conjunto de listas por su clase, recorres el conjunto obtenido y le asignas a cada una el valor buscado. La selección de la opción equivalente será automática.

P.D.: No me había fijado de que querías que el cambio se produzca en varias listas a la vez.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 05/11/2014 a las 13:09 Razón: Mejora
  #4 (permalink)  
Antiguo 05/11/2014, 13:50
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Seleccionar opción en todos los select

Cita:
Iniciado por alexg88 Ver Mensaje
Si va a usarse en IE8 y versiones anteriores, tienes que utilizar una librería como JQuery para realizar la búsqueda por clase o buscar una versión de la función getElementsByClassName que funcione en estos navegadores.

Un saludo.
sólo a modo de apunte. polyfill
Cita:
if(!document.getElementsByClassName) {

document.getElementsByClassName = function(className){
var regex = new RegExp(className);
var array = [];
var element = arguments[1] || document.documentElement;
for(var elem = element.firstChild; elem != null; elem = elem.nextSibling) {
if(elem.nodeType != 1)continue;
if(regex.test(elem.className)) array.push(elem);
if(elem.hasChildNodes()) array = array.concat(arguments.callee(className, elem));
}
return array;
}
}
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 05/11/2014, 14:38
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Seleccionar opción en todos los select

Muchas gracias, tema resuelto.
  #6 (permalink)  
Antiguo 05/11/2014, 14:39
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Seleccionar opción en todos los select

Muchas gracias por el apunte IsaBelM, me refería justamente a eso, quizás tenía que haber especificado más.

Un saludo.

Etiquetas: formulario, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:28.