¿Alguna idea de cómo hacer que DatePicker aparezca al final del cuadro de texto asociado en lugar de directamente debajo de él? Lo que suele suceder es que el cuadro de texto está hacia la parte inferior de la página y el DatePicker se desplaza hacia arriba para tener en cuenta y cubre totalmente el cuadro de texto. Si el usuario quiere escribir la fecha en lugar de elegirla, no puede. Prefiero que aparezca justo después del cuadro de texto para que no importe cómo se ajuste verticalmente.
¿Alguna idea de cómo controlar el posicionamiento? No vi ninguna configuración para el widget, y no he tenido suerte modificando la configuración de CSS, pero fácilmente podría faltar algo.
javascript
jquery
jquery-ui
jquery-ui-datepicker
gfrizzle
fuente
fuente
Respuestas:
La respuesta aceptada para esta pregunta en realidad no es para jQuery UI Datepicker. Para cambiar la posición de jQuery UI Datepicker simplemente modifique .ui-datepicker en el archivo css. El tamaño del selector de fecha también se puede cambiar de esta manera, simplemente ajuste el tamaño de la fuente.
fuente
Esto es lo que estoy usando:
Es posible que también desee agregar un poco más al margen izquierdo para que no esté justo contra el campo de entrada.
fuente
$(this).position(my:'left top', at:'left bottom', of:'#altField')
(ya que estoy usando laaltField
opción de datepicker para mostrar)Lo hago directamente en el CSS:
Mis campos de entrada de fecha tienen 100 píxeles de ancho. También agregué el índice z para que el calendario también aparezca sobre las ventanas emergentes de AJAX.
No modifico el archivo CSS jquery-ui; Sobrecargo la clase en mi archivo CSS principal, por lo que puedo cambiar el tema o actualizar el widget sin tener que volver a ingresar mis mods específicos.
fuente
Aquí está mi variación de la alineación del calendario Datepicker.
Creo que es bastante bueno, porque puedes controlar el posicionamiento a través de jQuery UI Position util.
Una restricción: se requiere jquery.ui.position.js.
Código:
fuente
afterShow
método.Aquí hay otra variación que me funciona bien, ajuste el rect.top + 40, rect.left + 0 para satisfacer sus necesidades:
fuente
Esto funciona para mi:
fuente
Primero, creo que debería haber un
afterShowing
método en el objeto datepicker, donde podría cambiar la posición después de que jquery haya hecho todo su vudú en el_showDatepicker
método. Además, un parámetro llamadopreferedPosition
también sería deseable, por lo que podría configurarlo y jquery modificarlo en caso de que el diálogo se represente fuera de la ventana gráfica.Hay un "truco" para hacer esto último. Si estudia el
_showDatepicker
método, verá el uso de una variable privada$.datepikcer._pos
. Esa variable se configurará si nadie la ha configurado antes. Si modifica esa variable antes de mostrar el diálogo, Jquery la tomará e intentará ubicar el diálogo en esa posición, y si se renderiza fuera de la pantalla, lo ajustará para asegurarse de que esté visible. Suena bien, ¿eh?El problema es;
_pos
es privado, pero si no te importa. Usted puede:Pero tenga cuidado con las actualizaciones de Jquery-ui, porque un cambio en la implementación interna de la
_showDatepicker
puede romper su código.fuente
Necesitaba colocar el selector de fechas de acuerdo con un div principal dentro del cual residía mi control de entrada sin bordes. Para hacerlo, utilicé la utilidad de "posición" incluida en el núcleo de jquery UI. Hice esto en el evento beforeShow. Como otros comentaron anteriormente, no puede establecer la posición directamente en beforeShow, ya que el código datepicker restablecerá la ubicación después de finalizar la función beforeShow. Para evitar eso, simplemente establezca la posición usando setInterval. La secuencia de comandos actual se completará, mostrando el selector de fecha, y luego el código de reposicionamiento se ejecutará inmediatamente después de que el selector de fecha sea visible. Aunque nunca debería suceder, si el selector de fecha no es visible después de .5 segundos, el código tiene una seguridad para darse por vencido y borrar el intervalo.
fuente
enlazar focusin después de usar datepicker cambiar css del widget de datepicker desea ayuda
fuente
Lo arreglé con mi código jquery personalizado.
le di a mi campo de entrada datepicker una clase " .datepicker2 "
encontrar su posición actual desde arriba y
colocó el cuadro emergente, cuyo nombre de clase es " .ui-datepicker "
aquí está mi código.
aquí "40" es mi píxel esperado, puede cambiar con el suyo.
fuente
arreglar mostrar posición problema daterangepicker.jQuery.js
fuente
Una función jquery muy simple.
fuente
Pasé una cantidad ridícula de tiempo tratando de resolver este problema para varias páginas de un nuevo sitio que estoy desarrollando y nada parecía funcionar (incluida cualquiera de las diversas soluciones presentadas anteriormente que implementé. Supongo que jQuery acaba de cambiar las cosas han subido lo suficiente ya que se sugirió que las soluciones ya no funcionan. No lo sé. Honestamente, no entiendo por qué no hay algo simple implementado en la interfaz de usuario de jQuery para configurar esto, como parece ser un problema bastante grande con el calendario siempre apareciendo en alguna posición considerablemente más abajo en la página de la entrada a la que está adjunto.
De todos modos, quería una solución final que fuera lo suficientemente genérica como para poder usarla en cualquier lugar y funcionaría. Parece que finalmente he llegado a una conclusión que evita algunas de las respuestas más complicadas y específicas del código jQuery anteriores:
jsFiddle: http://jsfiddle.net/mu27tLen/
HTML:
JS:
Esencialmente adjunto una nueva etiqueta de estilo al encabezado antes de cada evento "show" del selector de fechas (eliminando la anterior, si está presente). Este método de hacer las cosas soluciona la gran mayoría de los problemas que encontré durante el desarrollo.
Probado en Chrome, Firefox, Safari e IE> 8 (ya que IE8 no funciona bien con jsFiddle y estoy perdiendo el gusto por preocuparme
Sé que esta es una mezcla de contextos jQuery y javascript, pero en este punto simplemente no quiero esforzarme en convertirlo a jQuery. Sería simple, lo sé. Estoy tan harto de esto ahora mismo. Espero que alguien más pueda beneficiarse de esta solución.
fuente
Cambiaron el nombre de la clase a
ui-datepicker-trigger
Entonces esto funciona en
jquery 1.11.x
fuente
Lo tomé de (( Cómo controlar el posicionamiento de jQueryUI datepicker ))
$ .extend ($. datepicker, {_checkOffset: function (inst, offset, isFixed) {return offset}});
funciona !!!
fuente
O puede usar el evento de enfoque en su objeto dateSelect y posicionar api juntos. Puede cambiar la parte superior e inferior e izquierda por la derecha o el centro (o realmente cualquier cosa que desee de la API de posición). De esta manera, no necesita un intervalo ni ninguna solución increíblemente compleja y puede configurar el diseño para que se adapte a sus necesidades dependiendo de dónde esté la entrada.
fuente
También vale la pena señalar que si IE cae en modo peculiar, los componentes de la interfaz de usuario de jQuery y otros elementos se colocarán incorrectamente.
Para asegurarse de no caer en el modo peculiar, asegúrese de configurar su tipo de documento correctamente en el último HTML5.
El uso de Transicional hace que las cosas sean un desastre. Con suerte, esto le ahorrará a alguien algo de tiempo en el futuro.
fuente
Esto coloca la funcionalidad en un método llamado función, lo que permite que su código lo encapsule o que el método se convierta en una extensión jquery. Solo usado en mi código, funciona perfectamente
fuente
Dentro de Jquery.UI, simplemente actualice la función _checkOffset, para que viewHeight se agregue a offset.top, antes de que se devuelva el offset.
fuente
fuente
fuente