Tengo un datepicker con changeyear: verdadero. El menú desplegable 'año' muestra el título como 2009, luego, en lugar del año siguiente debajo del título, 2008, 2007, 2006, etc., comienza en 1999 y cuenta hacia arriba. Parece que no puedo encontrar una solución fácil para invertir este orden?JQuery UI Datepicker, invierta el orden del año en los menús desplegables
Respuesta
No recomendaría editar el ui.datepicker.js original como Cuong sugerido porque sus cambios se perderán tan pronto como usted u otro desarrollador reemplace el archivo cuando se lance una nueva versión. Recordar qué personalizaciones se han realizado para volver a aplicar no es práctico. En su lugar, puede anular la _generateMonthYearHeader
método existente en sus propios JS separadas de este modo:
// store original so we can call it inside our overriding method
$.datepicker._generateMonthYearHeader_original = $.datepicker._generateMonthYearHeader;
$.datepicker._generateMonthYearHeader = function(inst, dm, dy, mnd, mxd, s, mn, mns) {
var header = $($.datepicker._generateMonthYearHeader_original(inst, dm, dy, mnd, mxd, s, mn, mns)),
years = header.find('.ui-datepicker-year');
// reverse the years
years.html(Array.prototype.reverse.apply(years.children()));
// return our new html
return $('<div />').append(header).html();
}
acabo escribió esto para algo que estoy trabajando y lo hace el truco muy bien :)
- Abrir el archivo
ui.datepicker.js
- Encontrar el método
_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate, selectedDate, secondary, monthNames, monthNamesShort)
Encuentra el siguiente bucle en el método
for (; year <= endYear; year++) { html += '<option value="' + year + '"' + (year == drawYear ? ' selected="selected"' : '') + '>' + year + '</option>'; } html += '</select>';
Inserte el siguiente código antes de ese bucle:
if (year-100 < 1900) // Check year is lower then 1900 year = 1950; // change start point of above loop, it helps you having the // year's dropdownlist starting at 1950, and ending of current year plus 10.
eso es exactamente lo que buscaba ¡muchas gracias! – Lance
reemplazar la primera línea de la for
bucle con:
var minYear = year;
year = endYear;
for (; year >= minYear; year--) {
tengo una respuesta para usted, pero no es exactamente lo que es posible que desee escuchar.
Después de buscar en Internet por una solución que invertir el orden de los años en el menú desplegable, he llegado a esto:
{
changeMonth: true
, changeYear: true
, yearRange: '-65:'
, maxDate: '1999/12/31'
}
Esto tendrá el MaxDate preseleccionado, y por lo tanto la elección de un año se Ver automáticamente la última entrada, por lo tanto, puede desplazarse hasta para elegir una fecha anterior.
Editar: yearRange se agrega arbitrariamente, para crear un punto de partida hace 65 años. maxDate también se elige arbitrariamente, como una fecha de 12 años antes de escribir este comentario. Básicamente, este menú permitirá que alguien elija una edad entre 12 y 65 años.
No es ideal, pero funciona bastante bien.
bueno, funciona bien para mí. –
Creo que la mejor manera de hackear el complemento sin extraerlo es asignar un controlador de eventos al elemento de selección del año.
//Hack for reverting year order
$(document.body).delegate('select.ui-datepicker-year', 'mousedown', function() {
(function(sel) {
var el = $(sel);
var ops = $(el).children().get();
if (ops.length > 0 && $(ops).first().val() < $(ops).last().val()) {
$(el).empty();
$(el).html(ops.reverse());
}
})(this);
});
¡Este código debe funcionar bien! : P
Revisión mi propia responder. Espero que esto ayude :) !
jQuery datepicker year dropdown starts from 1900 and I want it to start from the bottom
Esto es cómo resolví mi problema.y creo que esta es la razón por jQuery no están arreglando este "error" porque hay un "camino" para obtener el año comenzó a partir de la última fecha:
dateFormat: 'mm/dd/yy', changeMonth: true, changeYear: true, yearRange: "-70:", maxDate: "-13Y"
En comparación con mi código original publicado aquí, en cambio si usa
yearRange
como años fijosyearRange: "1900:-13"
es mejor usar de abajo arriba:"-70:"
. y establecer elmaxDate
. Así que ahora tengo mi caja de selección de año a partir de 2004 y no 1900.Espero que esto ayude a los demás.
P.S: Todas las demás soluciones han sido probadas. Son muy lentos, y algunos no funcionan tan bien (especialmente los antiguos: establece el año actual en lugar de 2004, por ejemplo).
Esta debería ser la respuesta aceptada. –
- 1. jQuery UI - Datepicker - Ocultar año
- 2. jquery ui datepicker año siguiente y anterior
- 3. jquery ui datepicker día/mes solamente, no año de selección
- 4. Reajustar todos los menús desplegables seleccione
- 5. JQuery UI Datapicker: cómo agregar botones del año anterior/anterior
- 6. jQuery UI datepicker rendimiento
- 7. jQuery UI datepicker translation
- 8. jQuery-UI Datepicker: ¿Arrastrable?
- 9. jQuery UI Datepicker - Cómo alterar Datepicker HTML
- 10. Problema con la barra desplegable de año en jQuery datepicker
- 11. ¿Cómo localizo jQuery UI Datepicker?
- 12. Problemas con jQuery UI Datepicker
- 13. Jeditable con jQuery UI Datepicker
- 14. jQuery UI Datepicker Today Enlace
- 15. Formateo de jQuery UI datepicker
- 16. jQuery-UI fecha predeterminada datepicker
- 17. jQuery UI Datepicker y datejs
- 18. jQuery UI: DatePicker ¿SOLO CSS?
- 19. jquery datepicker rango de año predeterminado
- 20. Usar JQuery UI Datepicker con íconos de Jquery UI Theme
- 21. jQuery UI Datepicker con jQuery tipsy
- 22. android: invierta el orden de una matriz
- 23. Menús desplegables de web accesibles por teclado?
- 24. jQuery UI - Convierta jQuery UI Datepicker a hora UNIX
- 25. Cómo ser seleccionado día/mes y año de jquery datepicker
- 26. Eliminar los límites de minDate/maxDate en jQuery UI Datepicker
- 27. jQuery UI diferencia Datepicker en días
- 28. Resaltar fechas en jquery UI datepicker
- 29. Desactivar fechas futuras en jQuery UI Datepicker
- 30. jQuery UI datepicker: Configurar atajos de teclado
Realmente odio la poca usabilidad en los menús desplegables para seleccionar los años y, en general, recomiendo evitarlos. Aquí está el por qué: http://www.useit.com/alertbox/20001112.html. –
Esto se encuentra dentro de una ventana emergente de calendario, en realidad le da al usuario tres opciones, ya sea que lo escriba solo (que se recomienda en ese artículo), selecciónelo de un calendario emergente o use el menú desplegable para seleccionar el año. ¡Estoy bastante seguro de que es una solución utilizable! – Lance
http://stackoverflow.com/questions/42650410/jquery-datepicker-year-dropdown-starts-from-1900-and-i-want-it-to-start-the/42666011#42666011 Revise mi propia respuesta . Espero que esto ayude :) ! –