質問するログイン新規登録

回答編集履歴

1

sample

2017/06/22 09:43

投稿

yambejp
yambejp

スコア118405

answer CHANGED
@@ -4,4 +4,67 @@
4
4
  実際2017年3月31日を選んで、その後3月を2月に変更すれば結局31日が
5
5
  選ばれた状態になります。それを見越してあれやこれや例外処理を入れても
6
6
  結局未入力をさけるためにも送信時のチェックは必要なので
7
- がんばってもさほど意味がない作業になります。
7
+ がんばってもさほど意味がない作業になります。
8
+
9
+ # sample
10
+ 一応形だけ
11
+ ```javascript
12
+ <script>
13
+ document.addEventListener('change',function(e){
14
+ var t=e.target;
15
+ if(t.nodeName=="SELECT" && (t.name=="year" || t.name=="month")){
16
+ setDay();
17
+ }
18
+ });
19
+ function setDay(){
20
+ var f=document.getElementById("f1");
21
+ var y=f.elements["year"].options[f.elements["year"].selectedIndex].value;
22
+ var m=f.elements["month"].options[f.elements["month"].selectedIndex].value;
23
+ var d=f.elements["day"];
24
+ for(var i=d.options.length-1;i>0;i--){
25
+ d.removeChild(d.options[i]);
26
+ }
27
+ if(y!=="" && m!==""){
28
+ for(var i=1 ; i<=(new Date(y,m,0)).getDate(); i++){
29
+ var n=document.createElement("option");
30
+ n.setAttribute("value",i);
31
+ n.appendChild(document.createTextNode(("0"+i).substr(-2,2)));
32
+ d.appendChild(n);
33
+ }
34
+ }
35
+
36
+ }
37
+ window.onload=function(){
38
+ var f=document.getElementById("f1");
39
+ var y=f.elements["year"];
40
+ var m=f.elements["month"];
41
+ var myDate=new Date( );
42
+ for(var i=myDate.getFullYear()-50 ; i<myDate.getFullYear( )+2 ; i++){
43
+ var n=document.createElement("option");
44
+ n.setAttribute("value",i);
45
+ n.appendChild(document.createTextNode(i));
46
+ y.appendChild(n);
47
+ }
48
+ for(var i=1 ; i<=12 ; i++){
49
+ var n=document.createElement("option");
50
+ n.setAttribute("value",i);
51
+ n.appendChild(document.createTextNode(("0"+i).substr(-2,2)));
52
+ m.appendChild(n);
53
+ }
54
+ setDay();
55
+ }
56
+ </script>
57
+
58
+ <form id="f1">
59
+ <select name="year">
60
+ <option value="">----</option>
61
+ </select>年
62
+ <select name="month">
63
+ <option value="">--</option>
64
+ </select>月
65
+ <select name="day">
66
+ <option value="">--</option>
67
+ </select>日
68
+
69
+
70
+ ```