- ベストアンサー
代入の基礎
- 「n」の値によって年月日の値を変更する方法と、特定の条件下での代入方法について質問があります。
- 「n=2」の場合は今日の日付を表示し、それ以外の場合は最初に表示された値を表示したいそうです。
- 具体的な解決策や助言を求めています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
確かにこのソースでは、mydateは、set(n)が呼ばれたときに年月日に入っていた値が入ります。 このset(n)関数が動いた時に表示されていた値が格納されることになるからです。 「最初に表示された値」というのが、どのタイミングで入るものであっても、一つのテキストボックスでは対応しきれません。 初期値を格納しておくhiddenフォームを一つ用意しましょう。 その上で、最初に年月日フォームに入力された値を、そのhiddenフォームにコピーします。 コピーする関数を呼び出すのは、テキストボックスのonChange()イベントでいいと思います。 最初の入力かどうかを判定するのは、hiddenに値が入っているかどうかで判定すればいいかと思います。 function setValue(){ // hiddenの値が空だったら、初回入力 if(document.myForm.hidden年月日.value == ""){ //hidden項目に年月日の値をコピー document.myForm.hidden年月日.value = document.myForm.年月日.value } } set(n)関数は下記のように変更します。 function set(n){ mydate = document.myForm.hidden年月日.value; if(n == 2){ document.myForm.年月日.value = "今日の日付"; }else{ document.myForm.年月日.value = document.myForm.hidden年月日.value; } } HTMLは、 <form name="myForm"> <input type="text" name="年月日" onChange="setValue()"> <input type="hidden" name="hidden年月日"> <input type="button" value="今日の日付" onClick="set(2);"> <input type="button" value="初期値の日付" onClick="set(1);"> </form> という感じです。 動作確認はしていませんが、考え方はこのようになるかと。 がんばってください。 # formの名前「年月日」は、このままですか? # 2バイト文字は使わない方がいいかと思いますよ。