Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] <div id="datepicker"> a <input type="hidden" name="fecha">

Estas en el tema de <div id="datepicker"> a <input type="hidden" name="fecha"> en el foro de Jquery en Foros del Web. Estoy buscando la manera mediante jQuery de extraer el contenido y pasar los tres parámetros al <input> separados por guiones altos Código HTML: <td class= ...
  #1 (permalink)  
Antiguo 05/05/2014, 13:00
 
Fecha de Ingreso: enero-2008
Mensajes: 581
Antigüedad: 16 años, 10 meses
Puntos: 9
<div id="datepicker"> a <input type="hidden" name="fecha">

Estoy buscando la manera mediante jQuery de extraer el contenido y pasar los tres parámetros al <input> separados por guiones altos

Código HTML:
<td class="active day">4</td>
<span class="month active">Jun</span>
<span class="year active">2014</span> 
formato -> d-m-y

he pensado en hacerlo así porque genera un calendario grafico, pero en contra no parece que facilite el envió por <input>

Fragmento de código del Datepicker Bootstrap
Código HTML:
<div id="datepicker">
...
<td class="day">3</td>
<td class="active day">4</td>
<td class="day">5</td>
...
<span class="month">May</span>
<span class="month active">Jun</span>
<span class="month">Jul</span>
...
<span class="year">2013</span>
<span class="year active">2014</span>
<span class="year">2015</span>
...
</div>

<input type="hidden" name="fecha"> 
  #2 (permalink)  
Antiguo 05/05/2014, 13:21
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: <div id="datepicker"> a <input type="hidden" name="fecha">

Si entendí bien lo que dijiste, quieres asignar al <input> la fecha unificada de los <span> con la clase active, ¿Es así? Pues, en ese caso, bastaría con que recorras con un bucle a todos los <span> contenidos en el <div> de id datapicker y verifiques la clase de cada uno de ellos. Cuando ocurran coincidencias, asignas sus contenidos a variables, las cuales unificarás y asignarás como contenido al <input>.



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
  #3 (permalink)  
Antiguo 05/05/2014, 13:53
 
Fecha de Ingreso: enero-2008
Mensajes: 581
Antigüedad: 16 años, 10 meses
Puntos: 9
Respuesta: <div id="datepicker"> a <input type="hidden" name="fecha">

Genial, aunque el día va en <td>
Intentare integrarlo, por cierto ¿Se ejecuta cada vez que selecciono un día el calendario?

Creo que seria algo asi
Cita:
$(document).ready(function(){
$(window)
.click(fecha);
function fecha(){SCRIPT}
}
Retoques que no creo que den problemas
Cita:

var spans = $("#datepicker .active"),
total = spans.length,
fecha = $("input[name=fecha]"),
day, month, year;

for (i = 0; i < total; i++) {
if (tds[i].className == "day active")
day = spans[i].innerHTML + "/";
if (spans[i].className == "month active")
month = spans[i].innerHTML + "/";
if (spans[i].className == "year active")
year = spans[i].innerHTML;
}

fecha.val(day + month + year);
  #4 (permalink)  
Antiguo 05/05/2014, 14:10
 
Fecha de Ingreso: enero-2008
Mensajes: 581
Antigüedad: 16 años, 10 meses
Puntos: 9
Respuesta: <div id="datepicker"> a <input type="hidden" name="fecha">

Quizas se deba a que el calendario se genera por jQuery...

Me devuelve NaN con load, y sin load no devuelve nada, uso chrome, probare con firefox

Cita:
$(window).click(fecha).load(fecha);
function fecha(){
var spans = $("#datepicker .active"),
total = spans.length,
fecha = $("input[name=fecha]"),
day, month, year;

for (i = 0; i < total; i++) {
if (tds[i].className == "day active")
day = spans[i].innerHTML + "/";
if (spans[i].className == "month active")
month = spans[i].innerHTML + "/";
if (spans[i].className == "year active")
year = spans[i].innerHTML;
}

fecha.val(day + month + year);
}

Última edición por quico5; 05/05/2014 a las 14:21
  #5 (permalink)  
Antiguo 05/05/2014, 15:16
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: <div id="datepicker"> a <input type="hidden" name="fecha">

Hice algunas modificaciones para que varíe según la fecha elegida.



Cuando se elija una fecha con el datepicker y se cierre el calendario (onClose), aplico el código que ya teníamos previamente, pero como función. Como el mes está dado en números, creo un array con los nombres abreviados de los meses (como mostraste en el ejemplo) para que se muestre el nombre correspondiente al mes seleccionado.

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

Última edición por Alexis88; 05/05/2014 a las 15:25 Razón: Corrección
  #6 (permalink)  
Antiguo 05/05/2014, 15:16
 
Fecha de Ingreso: enero-2008
Mensajes: 581
Antigüedad: 16 años, 10 meses
Puntos: 9
Respuesta: <div id="datepicker"> a <input type="hidden" name="fecha">

estoy pensando que como son únicos se podría evitar recorrerlos todos

Mejor te muestro como tengo los formularios
http://188.86.253.93/login

si te gijas, el ultimo campo abajo a la derecha es el input con datepicker y encima de el esta otro datepicker que lo usare para controlar el input que ocultare

Última edición por quico5; 05/05/2014 a las 15:22
  #7 (permalink)  
Antiguo 05/05/2014, 15:33
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: <div id="datepicker"> a <input type="hidden" name="fecha">

En ese caso, creo que esto sería lo que buscas:

__________________
«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 05/05/2014, 15:37
 
Fecha de Ingreso: enero-2008
Mensajes: 581
Antigüedad: 16 años, 10 meses
Puntos: 9
Respuesta: <div id="datepicker"> a <input type="hidden" name="fecha">

Genial, aunque no uso el datepicker original, uso el de bootstrap que tiene algunas adaptaciones al framework, voy a probar el codigo como lo tienes, gracias
  #9 (permalink)  
Antiguo 05/05/2014, 15:38
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: <div id="datepicker"> a <input type="hidden" name="fecha">

En ese caso, te recomendaría usar el de jQuery UI que es el que utilicé para el ejemplo. Esta es la API con todos los métodos y propiedades para que los utilices.

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 05/05/2014, 15:48
 
Fecha de Ingreso: enero-2008
Mensajes: 581
Antigüedad: 16 años, 10 meses
Puntos: 9
Respuesta: <div id="datepicker"> a <input type="hidden" name="fecha">

me suena que tenia alguna incompatibilidad el datepicker original con bootstrap, de todas formas voy a probarlo, gracias
  #11 (permalink)  
Antiguo 05/05/2014, 15:55
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: <div id="datepicker"> a <input type="hidden" name="fecha">

También podrías buscar las propiedades y métodos equivalentes en Bootstrap para que no tengas que mudar de librería o añadir otra.
__________________
«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 05/05/2014, 17:19
 
Fecha de Ingreso: enero-2008
Mensajes: 581
Antigüedad: 16 años, 10 meses
Puntos: 9
Respuesta: <div id="datepicker"> a <input type="hidden" name="fecha">

Creo que esta seria la API pero no he encontrado la forma de llevarlo a cabo http://bootstrap-datepicker.readthed...st/markup.html

de todas formas tu ejemplo parece simple y compactible con Bootstrap3, por lo que cambiando levemente el CSS del datepicker también me vale

veo que en el datepicker original no hay un archivo dedicado a la traducción, en su lugar hay que traducirlo en el propio script que personaliza el calendario

me suena que puedo usar "data-date="2012-01-02" para pesarle una fecha al calendario según vaya correspondiendo

Código HTML:
<center><div id="datepicker" data-date="2012-01-02" style="margin-bottom:0;">
</div></center>
<br>
<input type="text" class="form-control" name="fecha" placeholder="Fecha" id="datepicker2" value="<?=isset($this->datos['fecha'])?$this->datos['fecha']:null?>"> 
  #13 (permalink)  
Antiguo 05/05/2014, 18:31
 
Fecha de Ingreso: enero-2008
Mensajes: 581
Antigüedad: 16 años, 10 meses
Puntos: 9
Respuesta: <div id="datepicker"> a <input type="hidden" name="fecha">

Esta primera la puse aquí porque solo quiero que se aplique a editar mediante PHP, pero aqui no parece ser aceptada

Cita:
<script>$(function() { $("#datepicker").datepicker("setDate", "11/11/2011") });</script>
Cita:
<center><div id="datepicker" style="margin-bottom:0;"></div></center>
  #14 (permalink)  
Antiguo 05/05/2014, 18:53
 
Fecha de Ingreso: enero-2008
Mensajes: 581
Antigüedad: 16 años, 10 meses
Puntos: 9
Respuesta: <div id="datepicker"> a <input type="hidden" name="fecha">

trasladando esto a los dos formularios me funciona el ajuste de fecha en el formulario editar

Cita:
<script>
$(function() {
fecha = $("input[name=fecha]");
$("#datepicker").datepicker({
onSelect: function(date){
var picker = date.split("/"),
nuevo = picker[0] + "-" + picker[1] + "-" + picker[2];
fecha.val(nuevo);
}
});
});
</script>

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 14:41.