Estoy usando el selector de fecha jQuery para mostrar el calendario en toda mi aplicación. ¿Quiero saber si puedo usarlo para mostrar el mes y el año (mayo de 2010) y no el calendario?
374
Estoy usando el selector de fecha jQuery para mostrar el calendario en toda mi aplicación. ¿Quiero saber si puedo usarlo para mostrar el mes y el año (mayo de 2010) y no el calendario?
Respuestas:
Aquí hay un truco (actualizado con todo el archivo .html):
EDITAR jsfiddle para el ejemplo anterior: http://jsfiddle.net/DBpJe/7755/
EDITAR 2 Agrega el valor del mes mes al cuadro de entrada solo al hacer clic en el botón Listo. También permite eliminar valores de cuadro de entrada, lo que no es posible en el campo anterior http://jsfiddle.net/DBpJe/5103/
EDIT 3 actualizó Mejor solución basada en la solución de rexwolf inactiva.
http://jsfiddle.net/DBpJe/5106
fuente
$(this).val($.datepicker.formatDate('MM yy', new Date(year, month, 1)));
#ui-datepicker-div.noCalendar .ui-datepicker-calendar, #ui-datepicker-div.noCalendar .ui-datepicker-header a {display: none;} #ui-datepicker-div.noCalendar .ui-datepicker-header .ui-datepicker-title{width: 100%; margin: 0;}
y luego usar Javascript para manipular el comportamiento:$("#ui-datepicker-div").addClass('noCalendar');
Este código me funciona perfectamente:
Salida es:
fuente
@Ben Koehler , ¡eso es perfecto ! Hice una modificación menor para que usar una sola instancia del selector de fecha más de una vez funcione como se esperaba. Sin esta modificación, la fecha se analiza incorrectamente y la fecha seleccionada anteriormente no se resalta.
fuente
Las respuestas anteriores son bastante buenas. Mi única queja es que no puede borrar el valor una vez que se ha establecido. También prefiero el enfoque extend-jquery-like-a-plugin.
Esto funciona perfecto para mí:
Luego invoque así:
fuente
Esto resolverá el problema =) Pero quería el formato de tiempo aaaa-mm
Aunque solo lo intenté en FF4
fuente
Tenía esta misma necesidad hoy y encontré esto en github, funciona con jQueryUI y tiene un selector de mes en lugar de días en el calendario
https://github.com/thebrowser/jquery.ui.monthpicker
fuente
Esto es lo que se me ocurrió. Oculta el calendario sin necesidad de un bloque de estilo adicional y agrega un botón de borrar para tratar el problema de no poder borrar el valor una vez que hace clic en la entrada. También funciona bien con múltiples recolectores de meses en la misma página.
HTML:
JavaScript:
fuente
Necesitaba un selector de Mes / Año para dos campos (Desde y Hasta) y cuando se eligió uno, el Máx / Mín se configuró en el otro ... a la hora de elegir las fechas de los boletos aéreos. Estaba teniendo problemas para establecer el máximo y el mínimo ... las fechas del otro campo se borrarían. Gracias a varias de las publicaciones anteriores ... finalmente lo descubrí. Debe configurar las opciones y las fechas en un orden muy específico.
Vea este violín para la solución completa: Mes / Year Picker @ JSFiddle
Código:
Agregue también esto a un bloque de estilo como se mencionó anteriormente:
fuente
Combiné muchas de las buenas respuestas anteriores y llegué a esto:
Esto se demostró que funciona pero enfrenta muchos errores, así que me vi obligado a parchear en varios lugares de datepicker:
parche1: en _showDatepicker: para suavizar la piel;
patch2: en _checkOffset: para corregir el posicionamiento del selector de mes (de lo contrario, cuando el campo está en la parte inferior del navegador, la comprobación de desplazamiento está desactivada);
patch3: en onClose de _hideDatepicker: de lo contrario, al cerrar la fecha, los campos parpadearán durante un período muy corto, lo cual es muy molesto.
Sé que mi solución estaba lejos de ser buena, pero por ahora está funcionando. Espero eso ayude.
fuente
Agregue una solución simple más
http://jsfiddle.net/tmnasim/JLydp/
Características :
------------------------------------
otra solución que funciona bien para datepicker y monthpicker en la misma página: (también evite el error de mutiple haga clic en el botón anterior en IE, que puede ocurrir si usamos la función de enfoque)
JS fiddle link
fuente
¿Soy solo yo o no funciona como debería en IE (8)? La fecha cambia al hacer clic en Listo, pero el selector de fecha se abre de nuevo, hasta que haga clic en algún lugar de la página para perder el foco en el campo de entrada ...
Estoy buscando resolver esto.
fuente
Si está buscando un selector de mes, pruebe este jquery.mtz.monthpicker
Esto me funcionó bien.
fuente
Como muchos otros, me he encontrado con numerosos problemas al intentar hacer esto, y solo una combinación de las soluciones publicadas, y eventualmente un gran truco para hacerlo perfecto, tiene me dado una solución.
Problemas con otras soluciones en este hilo que he probado:
Finalmente he encontrado una manera de solucionar todos estos problemas . Los primeros cuatro se pueden solucionar simplemente teniendo cuidado de cómo hace referencia a sus selectores de fecha y mes en su código interno y, por supuesto, haciendo alguna actualización manual de sus selectores. Esto se puede ver en los ejemplos de instanciación cerca de la parte inferior. El quinto problema puede solucionarse agregando un código personalizado a las funciones de selector de fechas.
NOTA: NO necesita utilizar los siguientes scripts de selección de mes para solucionar los primeros tres problemas en su selector de fecha normal. Simplemente use el script de instanciación datepicker cerca del final de esta publicación.
Ahora, para usar los marcadores de mes y solucionar el último problema, necesitamos separar los marcadores de fecha y los marcadores de mes. Podríamos obtener uno de los pocos complementos de jQuery-UI monthpicker, pero algunos carecen de flexibilidad / capacidad de localización, algunos carecen de soporte de animación ... entonces, ¿qué hacer? ¡Haga rodar su "propio" del código datepicker! Esto le ofrece un selector de mes completamente funcional, con todas las funcionalidades del selector de fecha, solo que sin mostrar días.
He suministrado una monthpicker js-escritura y el CSS-script que acompaña , usando el método descrito a continuación, con el código v1.11.1 jQuery-UI. Simplemente copie estos fragmentos de código en dos archivos nuevos, monthpicker.js y monthpicker.css, respectivamente.
Si desea leer sobre el proceso bastante simple por el cual convertí el selector de fecha en un selector de mes, desplácese hacia abajo hasta la última sección.
¡Ahora para agregar los datepickers y mespickers a la página!
¡Estos siguientes fragmentos de código de JavaScript funcionan con múltiples fechadores y / o meseros en la página, sin los problemas mencionados anteriormente! Solucionado generalmente usando '$ (this)'. mucho :)
El primer script es para un selector de fechas normal, y el segundo es para los "nuevos" seleccionadores de mes.
El .after comentado , que le permite crear algún elemento para borrar el campo de entrada, es robado de la respuesta de Paul Richards.
Estoy usando el formato "MM aa" en mi selector de mes y el formato 'aa-mm-dd' en mi selector de fecha, pero esto es completamente compatible con todos los formatos , por lo que puede usar el que desee. Simplemente cambie la opción 'dateFormat'. Las opciones estándar 'showButtonPanel', 'showAnim' y 'yearRange' son, por supuesto, opcionales y personalizables según sus deseos.
Agregar un selector de fechas
Creación de una instancia de Datepicker. Este va desde hace 90 años y hasta nuestros días. Le ayuda a mantener el campo de entrada correcto, especialmente si establece las opciones defaultDate, minDate y maxDate, pero puede manejarlo si no lo hace. Funcionará con cualquier formato de fecha que elija.
Agregar un selector de mes
Incluya el archivo monthpicker.js y el archivo monthpicker.css en la página que desea usar los mespickers.
Creación de instancias de Monthpicker El valor recuperado de este mespicker es siempre el PRIMER día del mes seleccionado. Comienza en el mes actual y abarca desde hace 100 años y 10 años en el futuro.
¡Eso es! Eso es todo lo que necesitas para hacer un mes.
Parece que no puedo hacer que un jsfiddle funcione con esto, pero está funcionando para mí en mi proyecto ASP.NET MVC. Simplemente haga lo que normalmente hace para agregar un selector de fecha a su página e incorpore los scripts anteriores, posiblemente cambiando el selector (que significa $ ("# MyMonthTextBox")) a algo que funcione para usted.
Espero que esto ayude a alguien.
Enlaces a pastebins para algunas configuraciones adicionales de selección de fecha y mes:
Monthpicker trabajando el último día del mes . La fecha que obtenga de este selector de mes siempre será el último día del mes.
Dos meseros colaboradores ; 'inicio' funciona el primer mes y 'fin' funciona el último mes. Ambos están restringidos entre sí, por lo que elegir un mes en 'fin' que es anterior al mes seleccionado en 'inicio' cambiará 'inicio' para que sea el mismo mes que 'fin'. Y viceversa. OPCIONAL: Al seleccionar un mes en 'inicio', el 'minDate' en 'fin' se establece en ese mes. Para eliminar esta función, comente una línea en onClose (lea los comentarios).
Dos datepickers colaboradores ; Ambos están restringidos entre sí, por lo que elegir una fecha en 'fin' que sea anterior a la fecha seleccionada en 'inicio' cambiará 'inicio' para que sea el mismo mes que 'fin'. Y viceversa. OPCIONAL: Al seleccionar una fecha en 'inicio', el 'minDate' en 'fin' se establece en esa fecha. Para eliminar esta función, comente una línea en onClose (lea los comentarios).
Cómo cambié el DatePicker para que sea un MonthPicker
Tomé todo el código javascript de jquery-ui-1.11.1.js perteneciente a su selector de fechas, lo pegué en un nuevo archivo js y reemplacé las siguientes cadenas:
Luego eliminé la parte del ciclo for que crea todo el div ui-datepicker-calendar (el div que otras soluciones ocultan usando CSS). Esto se puede encontrar en _generateHTML: function (inst).
Encuentra la línea que dice:
Marque todo desde después del cierre de la etiqueta div y hacia abajo (y sin incluir) la línea donde dice:
Ahora será infeliz porque necesitamos cerrar algunas cosas. Después de cerrar la etiqueta div de antes, agregue esto:
El código ahora debería estar bien unido. Aquí hay un fragmento de código que muestra lo que debería haber terminado:
Luego copié / pegué el código de jquery-ui.css perteneciente a los datepickers a un nuevo archivo CSS, y reemplacé las siguientes cadenas:
fuente
Después de excavar jQueryUI.com para datepicker, aquí está mi conclusión y respuesta a su pregunta.
Primero, diría que no a su pregunta. No puede usar jQueryUI datepicker para elegir solo mes y año. No es compatible No tiene función de devolución de llamada para eso.
Pero puede hackearlo para mostrar solo mes y año usando css para ocultar los días, etc. Y creo que no tendrá sentido porque necesita que se haga clic en las fechas para elegir una fecha.
Puedo decir que solo tienes que usar otro selector de fechas. Como lo que sugirió Roger.
fuente
Tuve el problema del selector de fecha mezclado con el selector de mes. Lo resolví así.
fuente
Si alguien quiere eso también para múltiples calendarios, no es muy difícil agregar esta funcionalidad a jquery ui. con búsqueda minificada de:
agregue esto delante de x
buscar
y reemplazarlo con
también busque
reemplazarlo con
para css debes usar:
después de que todo esté listo, simplemente vaya a las funciones init de datepicker que desee y proporcione la configuración var
justMonth: true
es la clave aquí :)fuente
Acerca de: http://www.mattkruse.com/javascript/calendarpopup/
Seleccione el ejemplo de selección de mes
fuente
Hice un par de mejoras a la respuesta casi perfecta de BrianS arriba:
Regexé el valor establecido en el programa porque creo que en realidad lo hace un poco más legible en este caso (aunque tenga en cuenta que estoy usando un formato ligeramente diferente)
Mi cliente no quería un calendario, así que agregué una adición a la clase show / hide para hacerlo sin afectar a ningún otro selector de fechas. La eliminación de la clase está en un temporizador para evitar que la tabla vuelva a parpadear a medida que el selector de fechas se desvanece, lo que parece ser muy notable en IE.
EDITAR: Un problema que queda por resolver con esto es que no hay forma de vaciar el selector de fechas: borre el campo y haga clic y se volverá a llenar con la fecha seleccionada.
EDIT2: no he logrado resolver esto bien (es decir, sin agregar un botón Clear separado al lado de la entrada), así que terminé usando esto: https://github.com/thebrowser/jquery.ui.monthpicker , si alguien puede obtener la interfaz de usuario estándar para hacerlo sería increíble.
También necesitas esta regla de estilo:
fuente
Me gustó la respuesta @ user1857829 y su "enfoque extend-jquery-like-a-plugin". Acabo de hacer una pequeña modificación para que, cuando cambies el mes o el año, el selector escriba la fecha en el campo. Descubrí que me gustaría ese comportamiento después de usarlo un poco.
fuente
He tenido ciertas dificultades con la respuesta aceptada y ninguna otra podría usarse con un mínimo esfuerzo como base. Entonces, decidí ajustar la última versión de la respuesta aceptada hasta que cumpla al menos con los estándares mínimos de codificación / reutilización de JS.
Aquí hay una solución mucho más limpia que la tercera (última) edición de la respuesta aceptada de Ben Koehler . Además:
mm/yy
formato, sino con cualquier otro, incluidos los OPMM yy
.datestr
,month
,year
etc variables.Echale un vistazo:
Y todo lo que necesitas es el siguiente CSS en algún lugar:
Eso es. Espero que lo anterior ahorre algo de tiempo para más lectores.
fuente
Sé que es una respuesta tardía, pero tuve el mismo problema un par de días antes y encontré una solución agradable y fluida. Primero encontré este gran selector de fechas aquí
Luego, acabo de actualizar la clase CSS (jquery.calendarPicker.css) que viene con el ejemplo de esta manera:
El complemento activa un evento DateChanged cuando cambia algo, por lo que no importa que no haga clic en un día (y se adapta bien como un selector de año y mes)
¡Espero eso ayude!
fuente
También necesitaba un mes recolector. Hice uno simple con año en el encabezado y 3 filas de 4 meses a continuación. Compruébalo: selector de mes simple con jQuery .
fuente
Probé las diversas soluciones proporcionadas aquí y funcionaron bien si simplemente quería un par de menús desplegables.
El mejor 'selector' (en apariencia, etc.) ( https://github.com/thebrowser/jquery.ui.monthpicker ) sugerido aquí es básicamente una copia de una versión antigua de jquery-ui datepicker con el _generateHTML reescrito. Sin embargo, descubrí que ya no funciona bien con jquery-ui actual (1.10.2) y tenía otros problemas (no se cierra en esc, no se cierra en la apertura de otro widget, tiene estilos codificados).
En lugar de intentar arreglar ese selector de mes y en lugar de volver a intentar el mismo proceso con el último selector de fechas, decidí conectarme a las partes relevantes del selector de fechas existente.
Esto implica anular:
Como esta pregunta es un poco vieja y ya está bien respondida, aquí solo se muestra la anulación _selectDay para mostrar cómo se hizo esto:
Como se dijo, esta es una pregunta antigua, pero la encontré útil, así que quería agregar comentarios con una solución alternativa.
fuente
para un mes, usando JQuery v 1.7.2, tengo el siguiente javascript que está haciendo exactamente eso
$l("[id$=txtDtPicker]").monthpicker({
showOn: "both",
buttonImage: "../../images/Calendar.png",
buttonImageOnly: true,
pattern: 'yyyymm', // Default is 'mm/yyyy' and separator char is not mandatory
monthNames: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez']
});
fuente
Gracias por la solución de Ben Koehler.
Sin embargo, tuve un problema con varias instancias de datepickers, y algunas de ellas fueron necesarias con la selección del día. La solución de Ben Koehler (en la edición 3) funciona, pero oculta la selección del día en todos los casos. Aquí hay una actualización que resuelve este problema:
fuente
Utilice la
onSelect
devolución de llamada y elimine la parte del año manualmente y configure el texto en el campo manualmentefuente