質問

私はjQuery UIカレンダーを実装する必要があります。ユーザーが日付をクリックすると、次のMOMまたはEOMに自動的に選択します。

例えば4月9日をクリックすると、「4月15日」に行く必要があります。 または2月22日のクリックの場合は、「2月28」または「2月29」に進む必要があります。

明確化のため: お母さんは「月の中年、毎回15番目は15番」、毎月1から15です。 EOMは「月末、それは最後の日、2月31日、29月31日、29月31日31日31日31日31日、9月31日、9月31日、11月30日、12月31日...

ありがとう

役に立ちましたか?

解決 3

IE6 / IE7 / IE8 / IE9とFF、Chromeなどで動作するコード。

    <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>
.

他のヒント

テキストボックスの標準jQuery onchangeハンドラとしてこれを行います。その理由は、ユーザーが日付ピッカーを迂回して手動で日付を入力できるためです。日付が選択され、入力された、または貼り付けられている場合は、日付を自動的に変更する必要があります。

DatePickerからOnSelectイベントを使用します。MaxDateオプションセットとEOMまたはMOMの前に選択された値がMaxDateになるようにすることに注意してください。

更新:選択後に閉じます。代わりにOncloseを使用してください。

update2: jsfiddle 最新の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);
  }
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top