No.2ベストアンサー
- 回答日時:
こんばんは
おもしろそうなので作って見ました。
曜日鑑別法を実相しています。
ここではTABが使えないので全角の空白が入っていますので、それは置換してしてください。
解らないところがあれば、補足してください。
では、お試しあれ。
<HTML>
<BODY onLoad="toDay()">
<SCRIPT LANGUAGE=JavaScript>
<!--
function weekDay(y,m,d)
{ // 曜日を求めます。
if ( m < 3 ){
y -- ;
m += 12 ;
}
return (y+Math.floor(y/4)-Math.floor(y/100)+Math.floor(y/400)+Math.floor((m*13+8)/5)+d)%7 ;
}
function maxDay(y,m)
{ // 最大日数を求めます。
s = weekDay(y,m,1);
if ( m == 12 ){
y ++ ;
m = 1 ;
} else {
m ++ ;
}
e = weekDay(y,m,1);
if ( e >= s ){
return 28+e-s ;
} else {
return 35+e-s ;
}
}
function changeDay()
{ // 日付を更新します。
var y = eval(document.date.year.value);
var m = eval(document.date.month.selectedIndex+1);
var d = eval(document.date.day.selectedIndex+1);
var maxd = maxDay(y,m);
if ( d > maxd ){
d = maxd ;
document.date.day.selectedIndex = d-1 ;
}
var i ;
for (i=0 ;i<maxd ;i++){
document.date.day.options[i].text = i+1 ;
}
for ( ;i<31 ;i++){
document.date.day.options[i].text = "" ;
}
document.date.week.selectedIndex = weekDay(y,m,d);
return false ;
}
function toDay()
{ // 今日の日付に設定します。
d = new Date();
document.date.year.value = d.getFullYear();
document.date.month.selectedIndex = d.getMonth();
document.date.day.selectedIndex = d.getDate()-1;
changeDay();
}
// -->
</SCRIPT>
<FORM NAME=date>
<INPUT NAME=year SIZE=4 onChange="changeDay()">
年
<SELECT NAME=month onChange="changeDay()">
<OPTION>1<OPTION>2<OPTION>3<OPTION>4<OPTION>5<OPTION>6<OPTION>7
<OPTION>8<OPTION>9<OPTION>10<OPTION>11<OPTION>12</SELECT>
月
<SELECT NAME=day onChange="changeDay()">
<OPTION>1<OPTION>2<OPTION>3<OPTION>4<OPTION>5<OPTION>6<OPTION>7<OPTION>8<OPTION>9<OPTION>10<OPTION>11
<OPTION>12<OPTION>13<OPTION>14<OPTION>15<OPTION>16<OPTION>17<OPTION>18<OPTION>19<OPTION>20<OPTION>21
<OPTION>22<OPTION>23<OPTION>24<OPTION>25<OPTION>26<OPTION>27<OPTION>28<OPTION>29<OPTION>30<OPTION>31</SELECT>
日
<SELECT NAME=week disabled>
<OPTION>日曜日<OPTION>月曜日<OPTION>火曜日<OPTION>水曜日<OPTION>木曜日<OPTION>金曜日<OPTION>土曜日</SELECT>
</FORM>
</BODY>
</HTML>
No.1
- 回答日時:
日の select オブジェクトの options プロパティを動的に変更することで可能です。
月末日や閏年の求め方が分からなければ、勉強がてらソースを解読してみてください。
# スクリプト部
<script type="text/javascript">
<!--
function setDayOptions(f) {
// 年月日を取得
var y = f.year.options[f.year.selectedIndex].text;
var m = f.month.selectedIndex + 1;
var d = f.day.selectedIndex + 1;
// 月末日を算出
var last = (m <= 7) ? (30 + m % 2) : (31 - m % 2);
if (m==2) {
last = 28;
if (y%4==0 && (y%100!=0 || y%400==0)) last++;
}
// optionsを変更
f.day.options.length = last;
for (var i = 29; i <= last; i++)
f.day.options[i-1] = new Option(i);
// 元の選択日を設定
f.day.selectedIndex = (d < last ? d : last) - 1;
}
//-->
</script>
# フォーム部
<form>
<select name="year" onChange="setDayOptions(this.form)">
<option>2003<option>2004
</select>年
<select name="month" onChange="setDayOptions(this.form)">
<option>1<option>2<option>3<option>4<option>5<option>6
<option>7<option>8<option>9<option>10<option>11<option>12
</select>月
<select name="day">
<option>1<option>2<option>3<option>4<option>5
<option>6<option>7<option>8<option>9<option>10
<option>11<option>12<option>13<option>14<option>15
<option>16<option>17<option>18<option>19<option>20
<option>21<option>22<option>23<option>24<option>25
<option>26<option>27<option>28<option>29<option>30<option>31
</select>日
</form>
※閏年にも対応したいとのことですので、年の select の onChange からも日の select を変更する setDayOptions() を呼び出します。
※スクリプトのインデントに全角空白を使っているので、コピペする場合はタブや半角空白に置換してください。
# 恐らく、このフォームの送信を受け取るCGIって「No.604526:Perlの日付の比較に関して」のものですよね?そちらは解決しましたか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) IF 関数で「〇〇 という文字を含む場合」の分岐処理で表示された数字はSUMで数字集計できますか? 3 2022/08/02 16:29
- Excel(エクセル) Excel2019、2021の日付、曜日の表示について 2 2022/11/29 15:01
- Excel(エクセル) Excel2019、2021の売り上げなどの集計表について 4 2022/11/29 14:03
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Excel(エクセル) Excelで作成しているシート(表) 5 2023/06/15 10:20
- その他(趣味・アウトドア・車) アマチュア無線の「村」まで入った「市郡区番号リスト」を探しています 4 2022/08/27 07:07
- JavaScript HTML,JS初心者です。 2つのselectボックスが有り その選択の組み合わせにより 指定した文 3 2022/03/31 23:35
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- 郵便・宅配 マンションの宅配ボックスの場所について Amazonで注文した品物を手渡しで受け取る際にAmazon 4 2022/06/14 09:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プルダウンメニューアイテムの...
-
セレクトボックスの値による入...
-
複数のプルダウンからリンクす...
-
VB6.0でコントロール配列の配列...
-
HTMLのoptionタグ部分に画像を...
-
GETをPOSTに変更したところ 送...
-
1アクションでPOST・GET、両方...
-
長文のmailtoの使い方
-
複数のフォームを一括で送信す...
-
フォームに入力した値をURLに付...
-
checkboxを「変更不可」にでき...
-
リンクをクリックした時にform...
-
submitをボタン以外にするには
-
URL パラメータを使ってフォー...
-
入力フォームの javascript で ...
-
チェックボックスにチェックを...
-
親ページからインラインフレー...
-
フォームからsubmitをした後再...
-
<a href=**?***=***>をGET方式で
-
送信ボタン押下時に値が未入力...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セレクトボックスを切り替える...
-
プルダウンメニューを選択した...
-
プルダウンメニューで、選択項...
-
switch文のswitch(n)の部分を複...
-
プルダウンメニュー項目のフォ...
-
プルダウンメニューアイテムの...
-
リストボックス全選択について
-
クリックすると下に項目が出て...
-
セレクトボックスの値による入...
-
HTMLのoptionタグ部分に画像を...
-
複数のプルダウンの値をパラメ...
-
Rails のコンボボックス(selec...
-
セレクトボックスを2つ設けて選...
-
<SELECT>タグでの selected 状...
-
プルダウンメニューでインライ...
-
セレクトボックスの幅をプルダ...
-
連動プルダウンのリンクについて
-
IE6とIE8のSELECTタグの11と31
-
<SELECT>の<option value="#">...
-
複数のプルダウンメニューの作...
おすすめ情報