Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Capturar varios valores de un input

Estas en el tema de Capturar varios valores de un input en el foro de Jquery en Foros del Web. Hola a todos como están veran tengo el siguiente problema tengo mi input que se genera a travez de while que hago con PHP @import ...
  #1 (permalink)  
Antiguo 22/10/2015, 14:38
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años, 7 meses
Puntos: 2
Capturar varios valores de un input

Hola a todos como están veran tengo el siguiente problema tengo mi input que se genera a travez de while que hago con PHP
Código PHP:
Ver original
  1. $q=@mysql_query($query, $link) or die(mysql_error());
  2.     $n=1;
  3.   while($r=@mysql_fetch_assoc($q)){
  4. $cad.='<div class="cliente-info-principal">
  5. <div class="col-md-4">
  6.          <input type="hidden" id="e_cargo_homologado_id'.$n.'" value="'.$r['jc_cargo_homologado_contacto'].'">
  7.          <select id="e_cargo_homologado_contacto'.$n.'" class="form-control" disabled>
  8.            <option value="Null">Seleccione Cargo</option>
  9.          </select>
  10.        </div>
  11.  </div>';
  12. $n++;
  13.     }
  14.     echo $cad;
como prodran ver se genera varias veces y se me olvido mencionar que tengo un select donde cargo la información que capturo del input a travez de jquery asi
Código Javascript:
Ver original
  1. function cargar_editar_cargo(){
  2.   e_cc = $("[id^=e_cargo_homologado_id]").val();
  3.   console.log(e_cc);
  4.   $.ajax({
  5.     type: "POST",
  6.     url: "funciones/ubigeo.php",
  7.     data: "c=15",
  8.     success: function(data){
  9.       $("select[id^=e_cargo_homologado_contacto]").append(data);
  10.       $("select[id^=e_cargo_homologado_contacto] option[value="+e_cc+"]").attr("selected",true);
  11.     }
  12.   });
  13. }
hasta lo hace bien pero solo me captura el valor del primer input que se genera claro que el id del input cambia por ejemplo el primer input su id seria e_cargo_homologado_id1 para el siguiente seria asi e_cargo_homologado_id2 no se si me falta algo mas o que
  #2 (permalink)  
Antiguo 22/10/2015, 16:48
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años, 7 meses
Puntos: 2
Respuesta: Capturar varios valores de un input

Ahora cambie mi funcion por esto
Código Javascript:
Ver original
  1. function cargar_editar_cargo(){
  2.   $("[id^=e_cargo_homologado_id]").each(function() {
  3.     e_cc = $("[id^=e_cargo_homologado_id]");
  4.     e_cc = $(this).val();
  5.     console.log(e_cc);
  6.   });
  7.   $.ajax({
  8.     type: "POST",
  9.     url: "funciones/ubigeo.php",
  10.     data: "c=15",
  11.     success: function(data){
  12.       $("select[id^=e_cargo_homologado_contacto]").append(data);
  13.       $("select[id^=e_cargo_homologado_contacto] option[value="+e_cc+"]").attr("selected",true);
  14.       console.log(e_cc);
  15.     }
  16.   });
  17. }
ya me extrae el valor de cada input pero por algun motivo no se lo asigna al select
  #3 (permalink)  
Antiguo 22/10/2015, 20:46
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Capturar varios valores de un input

De la forma en la que estás trabajando, solo vas a lograr afectar al primero de los elementos ya que capturas a todos los que tengan un identificador que empiece por el valor que indicas. Lo ideal sería que el evento afecte a cada elemento, de manera que cuando se produzca en el segundo, cuarto o noveno elemento, solo se afecte a ese y a nadie más que a ese.

Te sugiero utilizar una clase para todos los elementos, de tal modo que puedas delegar el evento de esta forma:

Código Javascript:
Ver original
  1. $(document).on("el evento", ".la clase", function(){
  2.     //$(this) será el elemento afectado
  3. });

Un saludo
__________________
«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
  #4 (permalink)  
Antiguo 23/10/2015, 10:45
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años, 7 meses
Puntos: 2
Respuesta: Capturar varios valores de un input

Hola y gracias por contestar si ves menciono que ya traigo el valor de cada input de todas formas ya lo cambie por clase y el resultado para el input es el mismo me trae el valor pero como le paso ese valor al select para que le asigne el attributo selected segun el valor del input es decir a esta linea
Código Javascript:
Ver original
  1. function cargar_editar_cargo(){
  2.   $.ajax({
  3.     type: "POST",
  4.     url: "funciones/ubigeo.php",
  5.     data: "c=15",
  6.     success: function(data){
  7.       $("select[id^=e_cargo_homologado_contacto]").append(data);
  8.       $('.m_info').each(function() {
  9.         e_cc = $(this).val();
  10.         $("select[id^=e_cargo_homologado_contacto] option[value="+e_cc+"]").attr("selected",true); //aqui quiero pasarle el valor del input y asignarle el attributo selected segun el valor del input
  11.         console.log(e_cc);
  12.       });
  13.     }
  14.   });
  15. }
ademas inicio del post puse que tanto el select como el input se generar con un while claro que el valor de cada input que se genera es distinto, ha por cierto no tengo ningun evento lo que hago es que esta funcion cargue cuando se carga otra funcion
  #5 (permalink)  
Antiguo 23/10/2015, 22:39
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Capturar varios valores de un input

Te enredas tanto por algo que se soluciona en una sola línea. Tan solo te basta con asignar el valor al combo, así si este coincide con el de alguna de las opciones, dicha opción se seleccionará.

DEMO (prueba cambiando el valor por el de alguna de las opciones)

Un saludo
__________________
«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
  #6 (permalink)  
Antiguo 26/10/2015, 08:42
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años, 7 meses
Puntos: 2
Respuesta: Capturar varios valores de un input

Hola alexis y gracias por contestar vi tu ejemplo y es +- lo que quiero pero como lo aplicaría a mi caso lo probé asi
Código Javascript:
Ver original
  1. $("[id^=e_cargo_homologado_id]").each(function() {
  2.         e_cc = $("[id^=e_cargo_homologado_id]");
  3.         e_cc = $(this).val();
  4.         console.log(e_cc)
  5.         $("[id^=e_cargo_homologado_id]").val(e_cc).prop("selected",true);
  6.       });
no se si este haciendo mal
  #7 (permalink)  
Antiguo 26/10/2015, 09:59
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Capturar varios valores de un input

Solo asígnale el valor y nada más. La selección de la opción será automática, tal y como has podido verlo en el ejemplo. Pero ten cuidado con la forma en la que lo haces, pues, de esa manera, asignarás el valor a todos los combos cuyo identificador empiece por "e_cargo_homologado_id" y si alguno de ellos no posee dicho valor, se seleccionará una opción en blanco.

Un saludo
__________________
«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
  #8 (permalink)  
Antiguo 26/10/2015, 10:08
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años, 7 meses
Puntos: 2
Respuesta: Capturar varios valores de un input

mmm y como lo haría no se si sea mucho pedir
  #9 (permalink)  
Antiguo 26/10/2015, 14:03
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Capturar varios valores de un input

Exactamente como te lo he venido diciendo. Primero, tendrías que tomar solamente al combo al que deseas afectar; luego, le asignas el valor tal y como lo estás haciendo pero sin la última parte en la que intentas fijar la selección de la opción.
__________________
«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 26/10/2015, 16:48
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años, 7 meses
Puntos: 2
Respuesta: Capturar varios valores de un input

haber lo probé así pero no me funciona aun
Código Javascript:
Ver original
  1. $("[id^=e_cargo_homologado_id]").each(function() {
  2.         e_cc = $("[id^=e_cargo_homologado_id]");
  3.         e_cc = $(this).val();
  4.         console.log(e_cc)
  5.          document.querySelector("[id^=e_cargo_homologado_id]").value = e_cc
  6.       });

no se que tengo que hacer
  #11 (permalink)  
Antiguo 26/10/2015, 22:58
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Capturar varios valores de un input

Antes de continuar, quiero saber si buscas afectar a todos los combos a la vez, lo cual quiere decir que todos poseen el valor que piensas establecer, o si deseas afectar solo a un combo. Dependiendo de eso, veremos cómo se puede seguir.

Un saludo
__________________
«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 27/10/2015, 08:26
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años, 7 meses
Puntos: 2
Respuesta: Capturar varios valores de un input

Haber veras todos los combos que se generan con el while cargan la misma información asi
Código HTML:
Ver original
  1. <select id="e_cargo_homologado_contacto1" class="form-control xy">
  2.             <option value="Null">Seleccione Cargo</option>
  3.           <option value="1">Gerente de Finanzas</option>
  4.          <option value="2">Gerente de Desarrollo Humano</option>
  5.           <option value="3">Jefe de Calidad</option>
claro que esto se carga con una funcion en ajax
Código Javascript:
Ver original
  1. function cargar_editar_cargo(){
  2.   $.ajax({
  3.     type: "POST",
  4.     url: "funciones/ubigeo.php",
  5.     data: "c=15",
  6.     success: function(data){
  7.       $("[id^=e_cargo_homologado_contacto]").append(data); // con esto cargo los option en el combo luego de la consulta que hago en php
  8.       $("[id^=e_cargo_homologado_id]").each(function() {
  9.         e_cc = $("[id^=e_cargo_homologado_id]");
  10.         e_cc = $(this).val();
  11.         console.log(e_cc)
  12.         document.querySelector("[id^=e_cargo_homologado_contacto]").value = e_cc;
  13.       });
  14.     }
  15.   });
  16. }
ahora bien en el que genera los combos es el while este
Código PHP:
Ver original
  1. $q=@mysql_query($query, $link) or die(mysql_error());
  2.     $n=1;
  3.   while($r=@mysql_fetch_assoc($q)){
  4. $cad.='<div class="cliente-info-principal">
  5. <div class="col-md-4">
  6.          <input type="hidden" id="e_cargo_homologado_id'.$n.'" value="'.$r['jc_cargo_homologado_contacto'].'"> //input que contiene el valor para asignarle el atributo selected al compo
  7.          <select id="e_cargo_homologado_contacto'.$n.'" class="form-control" disabled>
  8.            <option value="Null">Seleccione Cargo</option>
  9.          </select>
  10.        </div>
  11.  </div>';
  12. $n++;
  13.     }
  14.     echo $cad;
lo que quiere es que se asigne el atributo selected según el valor que se carga en este input claro que este valor existe en el combo el problema esta en que no todos los inputs tienes en mismo valor para poder asignarle el atributo selected al combo por ejemplo un input puede tener el valor 1 y otro el valor 2, claro como dije estos existen dentro del combo lo que quiero es asignar el atributo selected segun ese valor
  #13 (permalink)  
Antiguo 27/10/2015, 09:34
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Capturar varios valores de un input

En ese caso, lo que tendrías que hacer es, primero, tomar al elemento padre del combo mediante el método .parent(), luego, dentro de este, buscar a la caja de texto con el método .find(), tomar su valor y asignarlo al combo.

Sería más o menos así:
Código Javascript:
Ver original
  1. $.each($("[id^=el de las cajas de texto]"), function(){
  2.     var padre = $(this).parent(),
  3.         combo = padre.find($("[id^=el de los combos]");
  4.     combo.val($(this).val());
  5. });

Como te lo dije al inicio, $(this) representa a la caja de texto dentro de la función, así evitas conflictos con las demás cajas de texto al momento de tomarla. Recuerda que si el valor no existe entre las opciones del combo, se generará y seleccionará una opción vacía. Adáptalo a lo que tienes.

Un saludo
__________________
«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 29/10/2015, 12:06
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años, 7 meses
Puntos: 2
Respuesta: Capturar varios valores de un input

Hola Alexis muchas Gracias al final quedo asi
Código Javascript:
Ver original
  1. function cargar_editar_cargo(){
  2.   $.ajax({
  3.     type: "POST",
  4.     url: "funciones/ubigeo.php",
  5.     data: "c=15",
  6.     success: function(data){
  7.       $("[id^=e_cargo_homologado_contacto]").append(data);
  8.       $("[id^=e_cargo_homologado_id]").each(function() {
  9.         var e_ccid = $(this).parent(),
  10.         e_cc = e_ccid.find("[id^=e_cargo_homologado_contacto]");
  11.         e_cc.val($(this).val());
  12.       });
  13.     }
  14.   });
  15. }
Nuevamente Gracias por tu ayuda

Etiquetas: input
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 18:16.