コード †
参考文献 †
使い方 †
<script type="text/javascript">
var spinYear;
var spinMonth;
var spinDay;
window.onload = function() {
var now = new Date();
spinYear = new SpinControll('year', now.getFullYear(), 2000, 2100);
spinMonth = new SpinControll('month', now.getMonth()+1, 1, 12);
spinDay = new SpinControll('day', now.getDate(), 1, 31);
spinMonth.onChange = function(val) {
switch(val) {
case 2:
spinDay.setMaxValue( isLeapYear(spinYear.getVal()) ? 29 : 28 );
break;
case 4:
case 6:
case 9:
case 11:
spinDay.setMaxValue( 30 );
break;
default:
spinDay.setMaxValue( 31 );
}
}
}
function isLeapYear(year) {
if ( year % 400 == 0) {
return true;
}
if ( year % 100 == 0) {
return false;
}
if ( year % 4 == 0) {
return true;
}
return false;
}
function getValues() {
alert(spinYear.getVal() + "-" + spinMonth.getVal() + "-" + spinDay.getVal());
}
</script>
<body>
<table border="0">
<tr><td><div id="year"></div></td>
<td>年</td>
<td><div id="month"></div></td>
<td>月</td>
<td><div id="day"></div></td>
<td>日</td>
</tr></table>
<input type="button" onclick="getValues()" value="値の取得"/>
</body>
</head>
- コンストラクタ SpinControl?(id,value,minValue,maxValue)
id | Spin Control を埋め込む DIV |
value | 初期値 |
minValue | 最小値 |
maxValue | 最大値 |
- 公開インタフェース
- SpinControl?#getVal() : int
- SpinControl?#setVal(val) : void
- SpinControl?#setMaxVal?(val) : void
- イベントフック
- SpinControl?#onChange(val)
- 値が変更された場合に呼び出される
- 必要があれば override する
- 例では、「月」の値が変わったタイミングで、「日」の最大値が変更される
HTML