Foros del Web » Programando para Internet » Jquery »

Cambiar SELELCT html con JS

Estas en el tema de Cambiar SELELCT html con JS en el foro de Jquery en Foros del Web. Bueno mi duda es muy simple. tengo un select en html de este estilo Cita: <select name="cantidad" id="cantidad"> <option value="1"> 1 </option> <option value="2"> 2 ...
  #1 (permalink)  
Antiguo 10/12/2014, 12:13
 
Fecha de Ingreso: agosto-2013
Mensajes: 53
Antigüedad: 11 años, 4 meses
Puntos: 0
Cambiar SELELCT html con JS

Bueno mi duda es muy simple.

tengo un select en html de este estilo

Cita:
<select name="cantidad" id="cantidad">
<option value="1"> 1 </option>
<option value="2"> 2 </option>
</select>
Cuando elijo el 1, otro select tiene que llenarse una lista proveniende de mi base de datos, y lo mismo cuando elijo el 2.




Ya tengo implementado ajax en la misma pagina, el problema no es traer los datos sino meterlos en el SELECT CON JS.







los datos que traigo son listas codigo/descripcion de mas de 50 elementos.
  #2 (permalink)  
Antiguo 10/12/2014, 12:52
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: Cambiar SELELCT html con JS

Hola:

Si desde el principio el select está vacío, basta con repetir el método appendChild por cada option que quieras añadir, asignando los atributos value y text.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 10/12/2014, 13:02
 
Fecha de Ingreso: agosto-2013
Mensajes: 53
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Cambiar SELELCT html con JS

Podrias ponerme un ejemplo?

El tema es que el PHP del AJAX me devuelve un array, como meto un appendChild por cada valor del array?
  #4 (permalink)  
Antiguo 10/12/2014, 13:17
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Cambiar SELELCT html con JS

Siguiendo estos pasos:
  1. En cada iteración (cada vuelta del bucle con el que recorrerás al array), creas una nueva opción de esta forma: document.createElement("option").
  2. Asignas la opción creada a una variable y mediante las propiedades innerHTML y value, le asignas el texto que se mostrará para esa opción en la lista y el valor que representará.
  3. Finalmente, añades esa opción a la lista de esta forma: tuSelect.appendChild(laOpcion).

Saludos
__________________
«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
  #5 (permalink)  
Antiguo 10/12/2014, 13:20
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: Cambiar SELELCT html con JS

Hola:

Se puede usar innerHTML, pero también text...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 10/12/2014, 13:33
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Cambiar SELELCT html con JS

Estimado caricatos:

Si te refieres a la propiedad innerText, es necesario señalar que no es compatible con Firefox, por lo que en su lugar debe de usarse la propiedad textContent, pero como esta última solo es compatible con IE9+, es preferible usar la propiedad innerHTML.

Saludos
__________________
«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
  #7 (permalink)  
Antiguo 10/12/2014, 13:36
 
Fecha de Ingreso: agosto-2013
Mensajes: 53
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Cambiar SELELCT html con JS

mmmm, voy a tener que tomarme un dia para probarlo, espero que funcione.

Muchisimas gracias :D
  #8 (permalink)  
Antiguo 10/12/2014, 13:41
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: Cambiar SELELCT html con JS

Hola:

Cita:
Iniciado por Alexis88 Ver Mensaje
Estimado caricatos:

Si te refieres a la propiedad innerText, es necesario señalar que no es compatible con Firefox, por lo que en su lugar debe de usarse la propiedad textContent, pero como esta última solo es compatible con IE9+, es preferible usar la propiedad innerHTML.

Saludos
Alguien se ha inventado algo... el tag option referencia el contenido el atributo text (sin el inner)... es más, antes de usarse tanto el DOM, se creaban objetos "option", igual que objetos Image y otros... En mi último apunte: Etiquetando mapa SVG, mirando el código, uso estas líneas:

Código Javascript:
Ver original
  1. function _formar_(_i_, forma)    {
  2.     _op_ = document.createElement("option");
  3.     _op_.text = "forma_" + _i_ + " - (" + forma + ")";
  4.     _op_.value = "forma_" + _i_;
  5.     tag("selector").appendChild(_op_);
  6. }

No quise poner antes el código porque es parte de algo más complejo...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 10/12/2014, 13:48
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Cambiar SELELCT html con JS

Antes de responder, busqué dicha propiedad en la página de Quirksmode (la cual me parece bastante respetable) y no la encontré, por eso dije eso, nadie está inventando cosas.

Saludos
__________________
«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
  #10 (permalink)  
Antiguo 11/12/2014, 04:43
 
Fecha de Ingreso: agosto-2013
Mensajes: 53
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Cambiar SELELCT html con JS

realmente no pude implementarlos, necesitaria un ejemplo mas grafico de la primer respuesta que me dieron,

es que nose si estoy ubicando bien los resultados.
  #11 (permalink)  
Antiguo 11/12/2014, 10:47
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Cambiar SELELCT html con JS

¿Y qué tal si mejor nos muestras lo que has hecho y te ayudamos a partir de eso? No esperes a que te hagamos todo pues eso no va a suceder.

Saludos
__________________
«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
  #12 (permalink)  
Antiguo 11/12/2014, 16:28
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: Cambiar SELELCT html con JS

Hola:

Como para empezar...

Cita:
Iniciado por kolmy10 Ver Mensaje
Podrias ponerme un ejemplo?

El tema es que el PHP del AJAX me devuelve un array, como meto un appendChild por cada valor del array?
Ajax nunca devuelve un array, ya que solo existe responseXML y responseText... yo prefiero la respuesta XML, aunque es más popular el texto plano, así que sea lo que sea lo que recibes, ¿como consigues un array? ...

Paso a paso será más fácil...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #13 (permalink)  
Antiguo 11/12/2014, 22:08
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Cambiar SELELCT html con JS

Algo me dice que lo que recibe es un objeto JSON, pero solo kolmy10 nos puede sacar de la duda.
__________________
«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
  #14 (permalink)  
Antiguo 12/12/2014, 00:53
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: Cambiar SELELCT html con JS

Hola

Cita:
Iniciado por Alexis88 Ver Mensaje
Algo me dice que lo que recibe es un objeto JSON...
O sea texto plano (responseText), o código json dentro de un tag XML (responseXML)...

Porque destripando objetos Ajax no existe "responseJSON"

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #15 (permalink)  
Antiguo 12/12/2014, 02:24
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Cambiar SELELCT html con JS

Claro, solo habría que parsear la respuesta.

Código Javascript:
Ver original
  1. JSON.parse(xhr.responseText);

Saludos
__________________
«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
  #16 (permalink)  
Antiguo 16/12/2014, 08:02
 
Fecha de Ingreso: agosto-2013
Mensajes: 53
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Cambiar SELELCT html con JS

Código Javascript:
Ver original
  1. function ObtenerLista(texto)
  2. {
  3.     //jQuery
  4.     $.ajax({
  5.         type: "POST",
  6.         url: "listas.php",
  7.         data: {
  8.             lista:  texto
  9.         }
  10.     }).done(function(respuesta) {
  11.            
  12.  
  13.  
  14.            
  15.         });
  16. }


La variable "respuesta" me devuelve los datos asi


unodostrescuatrocincoseissiete

Si lo ven, me devuelve todas lasvariables juntas, pegadas una a la otra.

Como deberia tratarla para meter todo en una lista HTML?
  #17 (permalink)  
Antiguo 16/12/2014, 08:47
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 6 meses
Puntos: 834
Respuesta: Cambiar SELELCT html con JS

Creo que deberías replantear el archivo listas.php para que devuelva un xml o una cadena JSON o, al menos, una cadena de caracteres unidas con un separador (una coma, por ejemplo), porque si no, decinos: ¿con qué criterio separamos los valores que estás mostrando?
  #18 (permalink)  
Antiguo 16/12/2014, 08:51
 
Fecha de Ingreso: agosto-2013
Mensajes: 53
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Cambiar SELELCT html con JS

Bueno, es un for en PHP, puedo agregarle una coma al final de cada iteracion y problema resuelto.

El tema es, como deberia devolver los datos? separados por coma? y si es asi, como los trato para meterlos en un select a todos?

Listas.php me devuelve lo que yo quiera y de la forma que yo quiera, el tema es que no se que me conviene.
  #19 (permalink)  
Antiguo 16/12/2014, 09:10
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: Cambiar SELELCT html con JS

Hola:

Cita:
Iniciado por kolmy10 Ver Mensaje
Bueno, es un for en PHP, puedo agregarle una coma al final de cada iteracion y problema resuelto...

Listas.php me devuelve lo que yo quiera y de la forma que yo quiera, el tema es que no se que me conviene.
Los lenguajes de programación (web), en nuestro caso, javascript y php, nos proporcionan primitivas que son muy útiles... infórmate sobre explode/implode en php y split/join en javascript...

No es tan difícil.

Por cierto, $.ajax no es javascript nativo, y por lo que veo se trata de jQuery, y aunque tu problema parece ser del servidor, movemos el tema a la librería que usas...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #20 (permalink)  
Antiguo 16/12/2014, 09:20
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 6 meses
Puntos: 834
Respuesta: Cambiar SELELCT html con JS

Un ejemplo para que adaptes:
Código PHP:
<?php
if(isset($_GET['loquesea']) && ($_GET['loquesea']==|| $_GET['loquesea']==2) ){
    
$opciones=array('',array('uno','dos','tres'),array('cuatro','cinco','seis'));
    echo 
implode(',',($opciones[intval($_GET['loquesea'])]));
    exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>ejemplo</title>
<script>
function http(){
    if(typeof window.XMLHttpRequest!='undefined'){
        return new XMLHttpRequest();    
    }else{
        try{
            return new ActiveXObject('Microsoft.XMLHTTP');
        }catch(e){
            alert('Su navegador no soporta AJAX');
            return false;
        }    
    }    
}

function cambiar(el){
    document.getElementById('slave').innerHTML='';
    var h=new http;
    if(!h)return;
    h.open('get','<?php echo basename($_SERVER['PHP_SELF']) ?>?loquesea='+el.value+'&'+(+(new Date())),true);
    h.onreadystatechange=function(){
        if(h.readyState==4 && h.status == 200){
            var r=h.responseText.split(',');
            var fragment=document.createDocumentFragment(), tmp;
            for(var i=0,l=r.length;i<l;i++){
                tmp=document.createElement('option');
                tmp.value=tmp.text=r[i];
                fragment.appendChild(tmp);
            }
            document.getElementById('slave').appendChild(fragment);
            h.onreadystatechange=function(){}
            h.abort();
            h=null;
        }
    }
    h.send(null);
}
onload=function(){cambiar(document.getElementById('master'));};
</script>
</head>
<body>
<select name="cantidad" id="master" onchange="cambiar(this)">
<option value="1"> 1 </option>
<option value="2"> 2 </option>
</select>
<select id="slave">

</select>
</body>
</html>
  #21 (permalink)  
Antiguo 16/12/2014, 12:41
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Cambiar SELELCT html con JS

Cita:
Iniciado por kolmy10 Ver Mensaje
El tema es, como deberia devolver los datos? separados por coma? y si es asi, como los trato para meterlos en un select a todos?
Podrías formar un array con los datos, codificarlo en formato JSON y devolver dicho objeto. Luego, en el código JS, iteras sobre el objeto y, en cada iteración, creas opciones y las añades a la lista.

Código PHP:
Ver original
  1. $array = array('uno', 'dos', 'tres', 'cuatro', 'cinco', 'seis', 'siete');
  2. echo json_encode($array);

Código Javascript:
Ver original
  1. function ObtenerLista(texto){
  2.     $.ajax({
  3.         type: "POST",
  4.         url: "listas.php",
  5.         dataType: "JSON",
  6.         data: {
  7.             lista: texto
  8.         }
  9.     }).done(function(respuesta){
  10.         $.each(respuesta, function(index, value){
  11.             $("#idSelect").append($("<option value = '" + value + "'>" + value + "</option>"));            
  12.         });
  13.     });
  14. }

Saludos
__________________
«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

Etiquetas: ajax, html, javascript, js, 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 12:19.