2009-06-22 17 views
14

Tengo un Datepicker y un Timepicker en 2 campos de entrada separados pero necesito combinar las 2 entradas de campos en una para una llamada a la base de datos. ¿Quería saber si solo podía usar 1 campo de entrada para ambos controles?jQuery Datepicker y Timepicker para el mismo campo de entrada para emergente uno tras otro

primero llame al datepicker y el usuario haga clic en la fecha deseada e ingrese el valor, luego aparecerá el marcador y anexará la fecha que el usuario seleccionó en la primera acción.

estoy usando los jQuery UI Datepicker y Timepickr plug-ins

Así que tener algo como esto

<input class="datepicker">2009-06-22</input> 
<input class="timepicker">12:00:00</input> 

pero me gustaría algo como esto

<input class="datetimepicker">2009-06-22 12:00:00</input> 

<script type="text/javascript"> 
// Date and Time picker same input field 
$("#datepicker").datepicker({ 
    dateFormat: 'yy-mm-dd', 
    onClose: function(dateText, inst) { 
     var tempDate = $("#datepicker").val(dateText); 
     $("#datepicker").timepickr({ 
     onClose: function(timeText, inst) { 
      var tempTime = $("#datepicker").val(dateText); 
      alert("Temp Time: '" + tempTime.val() + "'"); 
      $("#datepicker").val(tempDate.val() + ' ' + tempTime.val()); 
     } 
     });         
    } 
});    
</script> 
+0

Ah, sod. Me equivoqué al ingresar al enlace allí, aquí está de nuevo ... [jQuery Timepicker mod] (http://puna.net.nz/timepicker.htm) – Fentex

Respuesta

0

Aquí hay una alternativa:

http://www.r-ip.ru/dev/datetimepicker/index.html

$('#datetimepicker').datetimepicker({ 
    dateFormat: 'yy-mm-dd', 
    timeFormat: ' hh:ii:ss' 
}); 
+1

El selector de fecha y hora en esa página tiene lo que el autor solicitó. .. –

+0

Eso no fue declarado. Además, la interfaz para el selector de tiempo en el enlace proporcionado es terrible. Me tomó unos segundos descubrir que al hacer clic en un valor, se incrementa. De cualquier manera, eliminé mi voto negativo. – Sampson

+1

Acepto que tiene lo que solicité pero no con los complementos que estoy usando y que quisiera utilizar. La solución que proporcionó es buena, pero estoy de acuerdo en que los controles de tiempo son un poco confusos. Gracias aunque –

1

Puede vincular un evento al evento onClose() del datepicker. Haz que abra tu selector de tiempo. Deje que el marcador de fecha escriba el valor base de la entrada, y haga que el cronometrador agregue su valor después de un espacio a la misma entrada.

  1. Vincular selector de fecha a la entrada.
  2. Adjunte el método para abrir timepicker al evento .onClose() del selector de fecha.
  3. Agregue el valor del selector de tiempo (con un espacio anterior) al valor de entrada.

Actualizado: El siguiente es un resultado actualizado de una pregunta actualizada.

La documentación da un breve ejemplo de cómo enlazar un evento/acción al cierre del selector de fechas:

$('.selector').datepicker({ 
    onClose: function(dateText, inst) { ... } 
}); 

En este ejemplo, se podría utilizar el siguiente función "onClode:" para escribir el valor a la entrada, y emerge el timepicker.

$(".selector").datepicker({ 
    onClose: function(dateText, inst) { 
    $(".selector").val(dateText); 
    // Raise Timepickr 
    } 
}); 
+0

Me gusta el flujo de esta opción pero nunca he ligado nada. He editado mi publicación anterior para mostrarle el código que estoy usando. Muy básico –

+0

hmm ¿cómo llamo al timepicker? –

+0

Lo siento, no sé. Nunca he usado ese plugin de terceros en particular. Debería consultar la documentación correspondiente o ponerse en contacto con el autor del complemento. Honestamente, puede ser más fácil buscar un complemento de terceros diferente que tenga tanto fecha como tiempo integrados en uno, algo como http://razum.si/jQuery-calendar/TimeCalendar.html o el complemento mencionado en la respuesta de Alexander. . – Sampson

0

Puede intentar combinar los aportes de ambos controles en uno como

$("#datetime").focus(function() { 
    var mydate = $("#date").val(); 
    var mytime = $("#time").val(); 
    if(mydate && mytime && !this.value) { 
     this.value = mydate + " " + mytime; 
    } 
}); 
+0

hmm interesante, gracias –

16

me gustaría recomendar Any+Time(TM), en la que se puede combinar la fecha/hora en un solo campo con una sola , selector de combo de fecha/hora fácil de usar (¡y rápido!).

+0

Gracias, esto es una buena adición –

+0

La versión 4 acaba de ser lanzada, con muchas características nuevas que incluyen soporte para TIME ZONES (intente encontrar eso en ¡cualquier otro selector!), jQuery selectores/encadenamiento y fácil extracción (para reducir fugas de memoria y admitir páginas más dinámicas). Visite http://www.ama3.com/anytime/ para obtener más información y descargar el código. Utilice el enlace de contacto en ese sitio si tiene algún problema o tiene alguna sugerencia. ¡Gracias! –

+2

Andrew, acabo de comenzar a utilizar el selector AnyTime según su sugerencia. Herramienta impresionante! :) Si alguien más encuentra esta publicación y está usando jqgrid con edición en línea, el selector de AnyTime no funciona del todo. Si abre un selector y luego cierra la fila, y luego regresa al mismo campo selector, obtendrá un error como "No se puede crear otro selector AnyTime". La forma en que encontré para solucionar esto fue pasar \t $ ('input'). AnyTime_noPicker(); al inicio de edición de editRow(). – jessica

0

Por favor pago la link.

he actualizado alguna cuestión de diseño y ha añadido segunda corredera, que estará activo si {showTime:true, time24h:true}

Usted puede encontrar el original en Google Code.

+0

¿Tiene alguna demo por favor? –

1

No jQuery, pero funciona bien para un calendario con tiempo: JavaScript Date Time Picker.

Sólo enlazar el evento de clic para que aparezca así:

$("#date").click(function() { 
    NewCssCal($(this).attr('id'), 'mmddyyyy', 'dropdown', true, 12); 
}); 

Personalmente, creemos que esto mucho más fácil de seguir. Pero obviamente tienes tantas opciones con múltiples plugins jquery disponibles para hacer tu trabajo.

Cuestiones relacionadas