質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

7214閲覧

javascriptで動的カレンダーをHTMLに出力したいです。

iwbtbij

総合スコア10

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/06/22 08:54

今生年月日をセレクトボックスに作ってみました。
しかし、このソースコードは非常に大きな問題点があります。
最後の日を出力する時もうし二月なのに31日まで出力しております。
私は今年月まで入力したら日は自動的に年月に合わせて日を出力したいです。

javascript

1var date = new Date(1960, 02); 2 3var dateCnt = date.getUTCDate();

上のソースコードを利用し、解決挑戦したができませんでした。


javascript

1<th bgcolor=#D8D8D8>生年月日 2 <td> 3 <select name="year"> 4 <option value=""> 5 <script> 6 for( var i=new Date( ).getFullYear( )-50 ; i<new Date( ).getFullYear( )+2 ; i++){ 7 document.write( "<option value="+i+">"+i ); 8 } 9 </script> 10 </select>&nbsp;&nbsp;&nbsp; 11 <select name="month"> 12 <option value=""> 13 <script> 14 for( var i=1 ; i<=12 ; i++){ 15 if(i<10){ document.write( "<option value='0"+i+"'>0"+i ); } 16 else { document.write( "<option value='"+i+"'>"+i ); } 17 } 18 </script> 19 </select>&nbsp;&nbsp;&nbsp; 20 <select name="day"> 21 <option value=""> 22 <script> 23 for( var i=1 ; i<=31 ; i++){ 24 if(i<10){ document.write( "<option value='0"+i+"'>0"+i ); } 25 else { document.write( "<option value='"+i+"'>"+i ); } 26 } 27 </script> 28 </select>&nbsp;&nbsp;29

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

JavaScript select 年月日」で検索。

【javascriptでありえない日付をselectで選択させない制御 - Qiita】
http://qiita.com/terrym/items/115e899294221902781f

【簡単にHTMLの年月日のプルダウンを作る方法 - ITS】
https://its-office.jp/blog/js/2016/03/08/ymd-html.html

【セレクトボックスの日付を切り替え | JavaScript逆引き | Webサイト制作支援 | ShanaBrian Website】
http://shanabrian.com/web/javascript/change-day.php

投稿2017/06/22 09:00

kei344

総合スコア69398

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

0

一般的には大きな問題ではなく選択後データ送信時にバリデートして
選択した日付は存在しない旨アラートを出せば済む話です。

実際2017年3月31日を選んで、その後3月を2月に変更すれば結局31日が
選ばれた状態になります。それを見越してあれやこれや例外処理を入れても
結局未入力をさけるためにも送信時のチェックは必要なので
がんばってもさほど意味がない作業になります。

sample

一応形だけ

javascript

1<script> 2document.addEventListener('change',function(e){ 3 var t=e.target; 4 if(t.nodeName=="SELECT" && (t.name=="year" || t.name=="month")){ 5 setDay(); 6 } 7}); 8function setDay(){ 9 var f=document.getElementById("f1"); 10 var y=f.elements["year"].options[f.elements["year"].selectedIndex].value; 11 var m=f.elements["month"].options[f.elements["month"].selectedIndex].value; 12 var d=f.elements["day"]; 13 for(var i=d.options.length-1;i>0;i--){ 14 d.removeChild(d.options[i]); 15 } 16 if(y!=="" && m!==""){ 17 for(var i=1 ; i<=(new Date(y,m,0)).getDate(); i++){ 18 var n=document.createElement("option"); 19 n.setAttribute("value",i); 20 n.appendChild(document.createTextNode(("0"+i).substr(-2,2))); 21 d.appendChild(n); 22 } 23 } 24 25} 26window.onload=function(){ 27 var f=document.getElementById("f1"); 28 var y=f.elements["year"]; 29 var m=f.elements["month"]; 30 var myDate=new Date( ); 31 for(var i=myDate.getFullYear()-50 ; i<myDate.getFullYear( )+2 ; i++){ 32 var n=document.createElement("option"); 33 n.setAttribute("value",i); 34 n.appendChild(document.createTextNode(i)); 35 y.appendChild(n); 36 } 37 for(var i=1 ; i<=12 ; i++){ 38 var n=document.createElement("option"); 39 n.setAttribute("value",i); 40 n.appendChild(document.createTextNode(("0"+i).substr(-2,2))); 41 m.appendChild(n); 42 } 43 setDay(); 44} 45</script> 46 47<form id="f1"> 48<select name="year"> 49<option value="">----</option> 50</select>51<select name="month"> 52<option value="">--</option> 53</select>54<select name="day"> 55<option value="">--</option> 56</select>57 58

投稿2017/06/22 09:08

編集2017/06/22 09:43
yambejp

総合スコア114769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

JavaScriptのDateオブジェクトの月は0~11までなので、2を指定すると3月になります。
そして面倒な末日計算などしなくても、このDateの日の部分に0を指定すると前月の末日になります。
末日さえわかればあとはできるのではないでしょうか?

JavaScriptで月末日を取得する
http://qiita.com/akase244/items/f558b9b3c51804103d16

投稿2017/06/22 09:10

x_x

総合スコア13749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問