Foros del Web » Programando para Internet » Jquery »

Jquery visualizar un calendario en un input clonado

Estas en el tema de Jquery visualizar un calendario en un input clonado en el foro de Jquery en Foros del Web. - Buenas a todos espero puedan ayudarme ya tengo un par de varias horas con esto y nada que encuentro la solucion, veran a raiz ...
  #1 (permalink)  
Antiguo 01/12/2014, 10:23
 
Fecha de Ingreso: marzo-2013
Mensajes: 32
Antigüedad: 11 años, 8 meses
Puntos: 0
Jquery visualizar un calendario en un input clonado

- Buenas a todos espero puedan ayudarme ya tengo un par de varias horas con esto y nada que encuentro la solucion, veran a raiz de que el atributo Date de html5 no me sirve en Mozilla Firefox busque otra alternativa en Google y me encontre con el Calendario Datepicker lo probe por separado de mi proyecto y de una vez me funciono lo cambie a español y todo fino todo bello, bien lo quise integrar a mi proyecto y hasta cierto punto pense que estaba bien hasta que me di cuenta que si añadia otro campo en mi documento el calendario en el segundo elemento clonado no funciona, para ser mas claro yo tengo el siguiente formulario.

Código HTML:
Ver original
  1. <form method="post" name="up_form" class="formulario">
  2.         <input type="hidden" name="insertar">
  3.       <table id="up_form"><br>     
  4.         <thead>
  5.             <tr>
  6.                 <th>Clasificación</th>
  7.                 <th>Descripción Documento</th>
  8.                 <th>Fecha del Documento</th>
  9.                 <th>Fecha de Expiración</th>
  10.                 <th>Adjuntar Archivo</th>
  11.             </tr>        
  12.         </thead>
  13.         <tbody>
  14.             <tr class="lire">
  15.                 <td>
  16.                     <select id="taxonomia" name="cod_clasificacion">
  17.                         <option value="">SELECCIONE UNA OPCION VALIDA</option>
  18.                         <option value="0">EXPEDIENTE MEDICO</option>
  19.                         <option value="1">EXPEDIENTE LABORAL</option>
  20.                         <option value="2">EXPEDIENTE SEGURIDAD INDUSTRIAL</option>
  21.                     </select>
  22.                 </td>
  23.                 <td>
  24.                     <textarea id="describe" name="descripcion" required /></textarea>
  25.                 </td>
  26.                 <td>
  27.                     <input type="text" class="datepicke" name="fecha_doc" required />
  28.                 </td>
  29.                 <td>
  30.                     <input type="text" class="datepicker" name="fecha_exp" required />
  31.                 </td>
  32.                 <td>
  33.                     <div class='input-file'>
  34.                       <input type="file" name="archivo[]">
  35.                       <input type="hidden" name="codigo" value="<?php echo $fila["cod_emp"]; ?>">
  36.                         Seleccionar archivo
  37.                       <div class="files">...</div>
  38.                   </div>
  39.                 </td>
  40.             </tr>
  41.         </tbody>   
  42.       </table>
  43.         <td>
  44.             <a href="#" id="btn-up" class="anex-up"> Anexar Otro Archivo </a>
  45.             <input id="btn-up" class="sub" type="submit" value="Cargar Documentos">
  46.         </td><br><br>
  47.     </form>

- Eso me da la siguiente interfaz.


- Si hago un click en cualquier de los dos input de Fecha del Documento y Fecha de Expiracion me sale el siguiente calendario.

.

- Ahora bien si yo hago un click en Añadir otro Archivo la fila de arriba se clona y se anexa de bajo, hice 2 click por lo tanto obtuve lo siguiente.

.

- Ok ahora el problema si yo doy click en los inputs CLONADOS de Fecha del Documento y Fecha de Expiracion no "Hace nada" no se muestran los calendario.

- Con este codigo hago la clonacion de filas.
Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.     $(document).on('change', 'input:file', function(){  // NUEVA LINEA
  3.        if($(this).val())
  4.        {
  5.          // Si tiene valor, se muestra en el class .files
  6.          $(this).parent().find(".files").html($(this).val().replace("C:\\fakepath\\", ""));
  7.         }else{
  8.          // Si no tiene valor, se muestran los puntos ...
  9.          $(this).parent().find(".files").html("...");
  10.         }
  11.     });
  12.  
  13.  
  14.     $(document).on("click",".anex-up",function() {
  15.        $("#up_form tbody tr:eq(0)").clone().appendTo("#up_form tbody").append('<td class="eliminar"><div id="eliminar">x</div></td>');
  16.         // (Se selecciona la ultima fila agregada, y se modifica el valor html del elemento con la clase 'files')
  17.         $("#up_form tbody tr:eq(-1)").find(".files").html("..."); // NUEVA LINEA
  18.      
  19.     });
  20.      
  21.     $(document).on("click",".eliminar",function(){
  22.         var parent = $(this).parents().get(0);
  23.         $(parent).remove();
  24.     });
  25. });

- Y para usar el Datepicker uso lo siguiente, esto lo tengo en el html donde tengo el formulario.
Código HTML:
Ver original
  1. <script src="script/jquery-2.1.1.min.js"></script>
  2. <script src="script/jquery-ui.js"></script>
  3.       <script>
  4.           $(document).ready(function() {
  5.             $( ".datepicker" ).datepicker();
  6.             $( ".datepicke" ).datepicker();
  7.           });
  8.       </script>

- Alguna idea? espero puedan ayudarme un Saludo.
  #2 (permalink)  
Antiguo 01/12/2014, 16:48
Avatar de andresgarciadev  
Fecha de Ingreso: junio-2013
Mensajes: 218
Antigüedad: 11 años, 5 meses
Puntos: 32
Respuesta: Jquery visualizar un calendario en un input clonado

es por que al iniciar le estas dando a todos
Código Javascript:
Ver original
  1. $( ".datepicker" ).datepicker();
pero despues de clonar ese input deberias asignarle tambien la funcion
Código Javascript:
Ver original
  1. .datepicker()
para que tambien sea uno
  #3 (permalink)  
Antiguo 02/12/2014, 06:42
 
Fecha de Ingreso: marzo-2013
Mensajes: 32
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Jquery visualizar un calendario en un input clonado

- Buenas andresgarciadev, gracias por respondes por lo que me comentas igual no entiendo que tiene de malo asignarle a todos al iniciar el .datepicker()?? porque yo quiero que todos los inputs incluso los que se clonen hereden esta funcion ya que si se los doy en primera instancia se supone que al clonarlo los clones deberian de tenerlo no?

- De igual forma como comentas no tengo idea de donde asignar el .datepicker() despues de clonar como sugieres en tu segundo parrafo. Donde deberia colocarlo ?
  #4 (permalink)  
Antiguo 02/12/2014, 17:36
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Jquery visualizar un calendario en un input clonado

Esa asignación inicial solo afecta a los elementos que se encontraban en el DOM al momento de cargar la página; los que añadas después, aunque sean clones de elementos existentes y afectados por dicho widget, no tendrán el mismo comportamiento.

Al momento de clonar, aplica el widget datepicker para que dicho clon también tenga el comportamiento deseado.

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 03/12/2014, 08:43
 
Fecha de Ingreso: marzo-2013
Mensajes: 32
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Jquery visualizar un calendario en un input clonado

- Buenas Alexis88, gracias por responder en cierto modo entiendo lo que me dices pero aun no logro dar con la solucion, primero en mi ignorancia intente hacer lo que me sugeriste, "aplica el widget datepicker para que dicho clon también tenga el comportamiento deseado" .

- Cosas que intente a mi pensar, Este fragmento del codigo agregue el datepicker.

Código Javascript:
Ver original
  1. $(document).on("click",".anex-up",function() {
  2.        $("#up_form tbody tr:eq(0)").clone().appendTo("#up_form tbody").append('<td class="eliminar"><div id="eliminar">x</div></td>');
  3.        
  4.         $("#up_form tbody tr:eq(-1)").find(".files").html("...");
  5.         $("#up_form tbody tr:eq(-1)").find(".datepicker").datepicker(); // NUEVA LINEA
  6.     $("#up_form tbody tr:eq(-1)").find(".datepicke").datepicker(); // NUEVA LINEA  
  7.      
  8.     });

- Y la verdad no entiendo porque no funciono entonces sin darme cuenta elimine esto.

Código Javascript:
Ver original
  1. <script>
  2.           $(document).ready(function() {
  3.             $( ".datepicker" ).datepicker();
  4.             $( ".datepicke" ).datepicker();
  5.           });
  6.       </script>

- Aclaro El primer codigo que coloque aun no lo habia eliminado y cuando fui al programa todos los clones que enexe desplegaban el calendario sin embargo los input Originales no hacian nada.




-Agregue denuevo.
Código Javascript:
Ver original
  1. <script>
  2.           $(document).ready(function() {
  3.             $( ".datepicker" ).datepicker();
  4.             $( ".datepicke" ).datepicker();
  5.           });
  6.       </script>

- Y los inputs Originales despliegan el calendario y los Clonados ahora no hacen absolutamente nada. Y no se que tan mal hice lo siguiente pero intente hacer una condicion de la siguiente manera Sin ningun resultado...

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.             if($("#up_form tbody tr:eq(-1)").find(".datepicker")){
  3.                 $("#up_form tbody tr:eq(-1)").find(".datepicker").datepicker(); // NUEVA LINEA
  4.                 $("#up_form tbody tr:eq(-1)").find(".datepicke").datepicker(); // NUEVA LINEA  
  5.             }else {
  6.                 $(".datepicker").datepicker();
  7.                 $(".datepicke").datepicker();
  8.             }
  9.           });

- Seguire intentando de momento espero puedan ayudarme, Saludos.

PD: Intente hacer tambien unas cosas con el Evento LIVE que lei unas cosas sobre el y tampoco puede solucionar y trate de hacer tambien los BIND sobre elementos Existentes y nada :/ .

Última edición por slikp; 03/12/2014 a las 08:52

Etiquetas: calendario, formulario, funcion, html, input, javascript, js, php, select, valor
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:46.