Pregunta

Necesito implementar un calendario de ui jQuery que cuando un usuario haga clic en cualquier fecha, seleccione automáticamente a la siguiente mamá o EOM.

Por ejemplo, si el usuario hace clic en el 9 de abril, debe ir al '15 de abril', O si los clics del 22 de febrero, deben ir a '28 de febrero' o '29 de febrero'.

para aclarar: Mamá es "mediados de mes, cada vez que es 15", de 1 a 15 de cualquier mes. EOM es "Fin del mes, es el último día del mes, 31 de enero, 28 de febrero, 28 de febrero, mar 31, 30 de abril, 31 de mayo, 30 de junio, 31 de julio, 31 de agosto, 30 de septiembre, 31 de octubre, 30 de noviembre,31 de diciembre ...

gracias

¿Fue útil?

Solución 3

El código que funciona con IE6 / IE7 / IE8 / IE9 y FF, Chrome, etc.

    <script type="text/javascript">
    $(function() {
        $("#payperiodcalendar input").datepicker({
            dateFormat: 'dd-M-yy',
            onSelect: function(dateText, inst) {
                var selectedDay = inst.currentDay,
                selectedMonth = inst.currentMonth,
                selectedYear = inst.currentYear;



                if (selectedDay <= 15) {
                    var now = new Date(selectedYear, selectedMonth, 15);
                } else {
                    var now = new Date(selectedYear, selectedMonth, LastDayOfMonth(selectedYear, selectedMonth));
                }
                $(this).attr("value", now.format("dd-MMM-yyyy"));

            }
        });
        function LastDayOfMonth(Year, Month) {
            Month++;
            return (new Date((new Date(Year, Month, 1)) - 1)).getDate();
        }
    });



</script>

Otros consejos

Haría esto como un controlador estándar de JQuery Onchange para el cuadro de texto.La razón es que un usuario puede pasar por alto la fecha-recolector y escriba una fecha manualmente.Desea que la fecha se cambie automáticamente, sin importar si se selecciona la fecha, mecanografiada o pegada.

Utilice el evento ONSELECT de DatePicker.Tenga en cuenta que si tiene configuración de opción MaxDate y está antes de la EOM o la madre, el valor seleccionado será MaxDate.

Actualización: Cerrar después de seleccionar.Use ontslose en lugar.

update2: jsfiddle usando el último jQuery ui

  onClose: function(dateText, inst) {
    var day = inst.currentDay,
        month = inst.currentMonth,
        year = inst.currentYear;

    if (day <= 15) {
      day = 15;
    }
    else {
      day = 0;
      if (month>10){
        month = 0;
        year++;
      }
      else
        month++;
    }
    var d = new Date(year, month, day);
    $(this).datepicker("setDate", d);
  }

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top