- ベストアンサー
値を初期化したい。
検索画面を作成しています。 この検索画面にリセットボタンを設置したいと思っているのですがうまくいきません。 この画面には、検索キーになる項目が50個ぐらいあるのですが、 一部のプルダウン項目が連動しており、選択される項目が変わる度に onchangeで、自分自身のページにsubmitしています。 上記のような事をしている為、他の入力フィールドは、 <input type="text" name="xxx" value=<%=Request("xxx")%>> としています。ですから、単純に <input type="reset" value="リセット"> というものが利用できない状態です。 リセットボタンを押された時に初期化(最初にページを開いた時の状態)に戻したいのですが、 何か良い方法はないでしょうか?ご存知の方がいらっしゃいましたらご教授下さい。よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
最初ページを開いた時の全フィールドを値をHiddenボークスで埋め込んで、リセット(普通のボタン)時に、Onclick事件でHiddenから読み込んで、値を付与ます。 50個フィールドがあれば、50個Hiddenボークスを用意します。 自分自身のページにsubmitすることがありますので、 最初状態とsubmit状態区別用のフラグを設ければ、OKだと思います。
その他の回答 (4)
- venzou
- ベストアンサー率71% (311/435)
No4です。 自分で補足しますが・・・ <!--↓リセット用のフォーム--> <form action="自分自身のURL"> <input type="submit" value="リセット"> </form> リセット用のフォームの中身は、何も無しで良いかも。 テストはしてませんので、うまく行かなかったらごめんなさい。
- venzou
- ベストアンサー率71% (311/435)
テストはしていませんが、 空の内容を自分自身にsubmitすれば初期化されませんか? <!--↓メインのフォーム--> <form> <input type="text" name="xxx" value=<%=Request("xxx")%>> ・ ・ ・ <input type="submit" value="送信"> </form> <!--↓リセット用のフォーム--> <form> <input type="hidden" name="xxx" value=""> ・ ・ ・ <input type="submit" value="リセット"> </form> 同じ内容で、全てhiddenでvalueが空のフォームを用意、 リセットボタンで、その内容をsubmit。
お礼
venzou様 ご回答ありがとうございます。 なるほど。 プルダウンの連動で自分自身にsubmitしているにも関わらず、空の内容の自分自身にsubmitする という発想がでてきませんでした。 まだまだ未熟者です。 早速試してみたいと思います。 ありがとうございました。
<script language="javascript"> var submitFlg = true; 以下略 <form name="Myform" onSubmit="return submitFlg;" > <input type="button" value="リセット" onClick="submitFlg=false;Myform.reset();submitFlg=true;"> 以下略 とかは出来ないですかね? リセットボタンを押されたらsubmitを無効化してreset()を呼び出し、 終了したら有効にする。 テストはしていません。
お礼
marimari01様 ご回答ありがとうございます。 なるほど、フラグでコントロールするんですね。 私も色々試した結果うまくいかなかったので、resetは使えないと思っていたのですが、 もう一度試してみたいと思います。 ありがとうございました。
- yambejp
- ベストアンサー率51% (3827/7415)
たとえばこんな感じで地道にクリアしてください <script> function resetValue(f){ for (var i=0;i<f.length;i++){ if(f[i].type=="text") f[i].value=""; if(f[i].type=="select-one") f[i].selectedIndex=0; if(f[i].type=="radio") f[i].checked=false; } } </script> <form> <input type="text" value="hogehoge"> <select> <option value="">選択</option> <option value="1">1</option> <option value="2" selected>2</option> </select> <input type="radio" name="r1"> <input type="radio" name="r1"> <input type="radio" name="r1" checked> <input type="button" value="リセット" onClick="resetValue(this.form)"> </form>
お礼
yambejp様 ご回答ありがとうございます。 なるほど。こう言う方法があるのですね。 type 別に値の変更ができるのか~。大変勉強になります。 ありがとうございます。
お礼
wangkp様 ご回答ありがとうございます。 なるほど。Hiddenか~。全然頭にありませんでした。 早速試してみたいと思います。 ありがとうございました。