July 05, 2008
Sabel JS - DatePicker(Sabel.Widget.Calendar)
Sabel 1.1で追加されるSabel.Widget.Calendarのサンプル。
カレンダーで日付を選択し、その選択された日付をインプットに適用するDatePicker.jsを書いてみた。
* 実際にサンプルのように表示するにはSabelに含まれるcssや画像が必要
カレンダーで日付を選択し、その選択された日付をインプットに適用するDatePicker.jsを書いてみた。
DatePicker.js
function datepicker(inputs) {
Sabel.Array.each(inputs, function(input) {
var div = document.createElement("div");
div.style.position = "absolute";
div.style.zIndex = 100;
document.body.appendChild(div);
var self = {
element: Sabel.get(input),
calendar: new Sabel.Widget.Calendar(div, {
callback: function(date) {
self.element.value = date.join("-");
}
}),
render: function() {
self.calendar.render();
}
};
div.style.top = Sabel.Element.getCumulativeTop(self.element) + "px";
div.style.left = Sabel.Element.getCumulativeLeft(self.element) + "px";
self.calendar.WeekDays = ["日", "月", "火", "水", "木", "金", "土"];
self.element.observe("mousedown", self.render);
});
}
インプットのidをdatepicker()関数に渡すだけで使用できる(簡単に使えるようにしているため、任意のタイミングでカレンダーを消すなどの処理はできない)。インプットをクリックすると、そのインプットの位置にカレンダーが表示され、日付をクリックするとインプットに年-月-日が入る。
<script type="text/javascript" src="Sabel.js"></script>
<script type="text/javascript" src="DatePicker.js"></script>
<script type="text/javascript">
new Sabel.Event(window, "load", function() {
datepicker(["inputid1", "inputid2", ...]);
});
</script>
動作の様子はこちら。* 実際にサンプルのように表示するにはSabelに含まれるcssや画像が必要