EOMとMOMのjQuery Ui DatePicker
質問
私は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);
}
. 所属していません StackOverflow