デフォルトの日付にジャンプするjquery datepickerを設定しました。これは非常に簡単ですが、選択可能な日付ごとにマウスオーバー イベントが関連付けられています。したがって、日付ピッカーがデフォルトの日付を設定すると、マウスオーバー イベントもトリガーされます。
その日付にジャンプした場合にのみ、これが発生しないようにする方法はありますか?
ここにそれをより明確にするフィドルがあります...アラートはマウスオーバーで発生するはずですが、日付ピッカーが開かれたときではありません。
そして、これが私のコードです(私がそれを含めると主張しているため)
function dateDiffInDays(a, b) {
// Discard the time and time-zone information.
var utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());
var utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());
return Math.floor((utc2 - utc1) / (1000 * 60 * 60 * 24));
}
var firstStartDate;
$('.Cal').datepicker({
firstDay: 1,
minDate: 0,
maxDate: '+2Y',
numberOfMonths: 1,
beforeShow: function(input, inst) {
startDates = [];
selectdatesElem = $(input).siblings("select.startdates");
firstStartDate = selectdatesElem.find("option:eq(1)").val().split(', ');
$(input).datepicker('option','defaultDate',dateDiffInDays(new Date(), new Date(parseInt(firstStartDate[1], 10) + "/" + parseInt(firstStartDate[2], 10) + "/" + parseInt(firstStartDate[0], 10))));
$(input).siblings("select.startdates").find("option").each( function() {
startdateParts = $(this).val().split(', ');
startDates.push(startdateParts[0] + ", " + (parseInt(startdateParts[1], 10)-1) + ", " + parseInt(startdateParts[2], 10));
});
},
beforeShowDay: function(date) {
for (i = 0; i < startDates.length; i++) {
if (date.getFullYear()+", "+date.getMonth()+", "+date.getDate() == startDates[i]) {
return [true, 'eventDay'];
}
}
return [false, ''];
}
});
$(document).on("mouseover", "td.eventDay", function() {
alert("Hello World!")
});
と
<input class='Cal' />
<select name="startDates" id="startDates" class="startdates">
<option selected="selected" value="%">%</option>
<option value="2013, 11, 01">C1</option>
<option value="2013, 11, 08">C1</option>
<option value="2013, 11, 11">C1</option>
<option value="2013, 11, 18">C1</option>
<option value="2013, 11, 29">C1</option>
<option value="2013, 11, 25">C1</option>
<option value="2013, 12, 06">C1</option>
</select>