JSP & JavaScriptのStrutsフレームワークでの開発において、値を元に戻す方法について知りたい

このQ&Aのポイント
  • JSPの<bean:write>とJavaScriptのdocument.getElementByIdを用いて値を埋め込み、クリアボタンを押すと元の値に戻るようにしたい。しかし、2回目以降のクリアボタン押下で値が取得できなくなる問題が発生してしまう。
  • この問題の解決方法を教えていただきたい。
  • OSはWindows XPを使用しています。
回答を見る
  • ベストアンサー

JSP & JavaScriptに関して

Strutsのフレームワークを用いて開発を行っています。 JSPに以下のことを記述して、<bean:write・・・と記述してある部分に変更がかかった場合(JavaScriptでdocument.getElementById("××").innerText=値 として、値を埋め込みます)も、元の値に戻したいと思っています。 .jspファイルに記載↓ <body onload="getOldData(document)"> <input type=hidden name="old_××" value ="" > <bean:write name="○○" property="××" /> <html:hidden name="○○" property="××" /> <input type="reset" value="クリア" onclick="getReset(document);"> .jsファイルに記載↓ //画面を開いた時の値をold_××にセットしておく function getOldData(doc) {  doc.getElementById("old_××").value =  doc.getElementById("id_××").innerText; } //変更がかかったinnerTextを画面表示時に戻す function getReset(doc) {  doc.getElementById("id_××").innerText = doc.getElementById("old_××").value; } このように設定すると、"クリア"ボタンを1回押す分には、画面表示時の状態に戻すことができるのですが、2回目を押すと、doc.getElementById("old_××").valueの値がとってこれなくなります。なぜ1回目は思った処理が行われて2回目以降は"old_××"の値がとってこれなくなるのかわかりません。 大変困っています。分かる方がいらっしゃいましたら、ご教授ください。 OS:Win XP

  • Java
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.1

JavaScriptの問題のようですが。 >"クリア"ボタンを1回押す分には、画面表示時の状態に戻すことができるのですが、2回目を押すと type="reset"のボタンで、そのformの全てのelementが、valueに記載されていた値に戻されます。 onclickはその前に実行されるから一回目は、getElementById("old_××")にデータがある。 2回目は、クリアして value ="" となっているので、これがコピーされる。 通常は、それぞれのelementの初期値を value ="△△" としておくだけで、getReset関数は必要ないように思うのですけど? id_×× はどこのどのタグにあるのでしょうか? そのform内のelementではないから、こんなことをしているというのなら、 hiddenタグに保持するのではなくて、JavaScriptのglobal変数に保持してみては?

関連するQ&A

  • javascriptの変数値をjspへ渡す方法?

    下記の方法で、テキスト項目から、javascriptで値を取得できました。 この値を、jspの変数Stringへ格納するには、 どうすればよいでしょうか? <%= "<script type=\"text/javascript\" charset=\"UTF-8\">" %> <%= "target = document.getElementById(\"outaddress1\");" %> <%= "target.innerText = document.forms.zip_form.address1.value;" %> <%= "target = document.getElementById(\"outaddress2\");" %> <%= "target.innerText = document.forms.zip_form.address2.value;" %> <%= "target = document.getElementById(\"outaddress3\");" %> <%= "target.innerText = document.forms.zip_form.address3.value;" %> <%= "</script>" %>

  • javascriptにてHTMLのhiddenエリアのvalueを変更したい

    javascriptにてHTMLのHIDDENエリアのVALUEをフォームの値が変わるごとに更新していきたいのですが、やり方がいまいちわかりません。 <input type = "text" value="10" id="aaa" onchange=aaa();/> <input type = "text" value="20" id="bbb" onchange=aaa();/> <input type = "hidden" name="abc" value="aaa"/> <script> function aaa(){ document.abc.value = document.getElementById("aaa").value+document.getElementById("bbb").value ; } </script> このような感じで考えていますが、進みません。どなたかご教授お願いいたします。

  • JSP→JSP フォームチェック

    困っているので助けてください。 まずプログラムの説明をさせてもらいます。 JSPからfromをつかってJSPにフォーム情報を送ります。 プログラムはこんな感じです。 <form action="abcdefg.jsp" method="post"> <input type="hidden" name="abc" value="abc"> <input type="hidden" name="def" value="def"> <input type="checkbox" name="aa" value="aa"> <input type="checkbox" name="bb" value="bb"> <input type="checkbox" name="cc" value="cc"> <input type="submit" value="次へ"> </form> これをabcdefg.jspで受け取る場合 String hidden_abc = request.getParameter("abc"); String hidden_def = request.getParameter("def"); とhiddenは必ず値が入っているのでこれで受け取れるのですが チェックボックスは選択しているかどうかわからないので上の記述では だめなようなのですがどのようなプログラムを書いたらいいのですか? 説明がうまく出来なく申し訳ないです。よろしければ教えてください。

    • ベストアンサー
    • Java
  • jsp~jspにhiddenを使って変数を飛ばしたい

    jspを勉強しています。 変数に代入した値をhiddenを使い飛ばしたいのですが、 うまくいきません。 String keyID = "123456"; <input type="hidden" name="S_id" value="keyID" /> 例えばこのような形で変数keyIDに値を代入して、hiddenで飛ばして 飛び先のjspで変数keyIDの値を取得したいのです。 どなたかアドバイスいただけるとありがたいです。

  • StrutsでJSPからListを受け取りたい

    JSPに複数のhidden(動的に数が変化)があり、これらの値をformのlist(配列)に詰めたいです。 尚、nameの値は別の処理でjavascriptを使いvalueを変化させるため連番であれば構わないです。です。 ~~~JSP~~~ <input type="hidden" name="str1" value="a"/> <input type="hidden" name="str2" value="b"/> <input type="hidden" name="str3" value="c"/> ~~~~~~~~ 上のJSPから下記のFORMに詰めたい ~~~form~~~ private List strList; public List getStrList(){ return strList; } ~~~~~~~~ 又、こちらで調べたところ下記のようにすればいけるようですが欲しい値は一つのためBeanを使用しなくても実現可能ではないかと思い、質問させていただきました。 よろしくお願い致します。 ~~~JSP~~~ <input type="hidden" name="testArray[0].str" value="a"/> <input type="hidden" name="testArray[1].str" value="b"/> <input type="hidden" name="testArray[2].str" value="c"/> ~~~~~~~ ~~~FORM~~~ private List list; public TestBean getTestA(int iIndex) { while (this.list.size() <= iIndex) { this.list.add(new TestBean ()); } return ( TestBean ) this.list.get(iIndex); } public Object[] getTestArray() { return list.toArray(); } public static class TestBean { private String str = ""; public String getStr() { return str; } public void setStr(String str) { this.str = str; } }

    • ベストアンサー
    • Java
  • リクエストパラメータの値によってJavaScriptでスタイルを変更する場合

    いつも参考にさせて頂いてます。 早速なのですが以下のことが分からず困っています。 親画面から子画面へ遷移する。 その際、チェックボックスの値を複数個POSTで送信する。 子画面で受け取った値をhiddenにそのまま保持し、 孫画面にそのままPOSTで送信する。 JSPを使っているのですがこういったことは可能なのでしょうか? ■親画面 <form method="POST" name="data2" action="child.jsp">   <input type="checkbox" id="check" name="check" value="1>   <input type="checkbox" id="check" name="check" value="2">   <input type="checkbox" id="check" name="check" value="3">   <input type="submit" value="送信"> </form> ■子画面 window.onload = function(){   //画面遷移時にリクエストパラメータをhiddenにセット   document.data.check2.value = <%= request.getParameterValues("check") %>; } ~略~ <form method="POST" name="data2" action="grandchild.jsp">   <input type="hidden" id="check2" name="check2" value="">   <input type="submit" value="送信"> </form> こんな感じで孫画面へそのまま渡せるのかな?と思ったのですが うまく行きませんでした。 アドバイスなどありましたら宜しくお願いします。

  • javascript・JSP関連

    理解できないことがあったので質問させていただきます。 javascriptで定義した変数をJSPに返すことはできますか? 例えば、 JSPで <select name="" id="aaa" onchange="bbb();"> javascriptで function bbb(){ var ccc = document.getElementById('aaa'); ddd = ccc.options[ccc.selectedIndex].value; //選択された項目の値を取得する } dddの変数をJSTL(標準タグライブラリ)の <c:set var="eee" value="ココに返す"> みたいなことは、できませんでしょうか? かなり簡潔に書いてしまいましたが、 ご理解して頂いた方は解答・返答の程、よろしくお願いします。

  • javascriptで取得した値を、FORMで送信する

    いつもお世話になっております。 jspからwindow.openを使い、別ウインドウを表示しました。 別ウインドウでの質問です。 javascriptで前のページ(jsp)の情報を受け取り、それを次のページ(jsp)へFORM(POST)で送りたいのですが、うまくいきません。 ご教授下さい。 <HTML> <HEAD> <script type="text/javascript"> <!-- function sent() { var num = window.opener.document.aaa.number01.value; ここで前ウィンドウの情報を取得しています return num; } function sub() { document.bbb.submit(); } // --> </script> </HEAD> <BODY onload="sub()"> <form name="bbb" METHOD="POST" action="http://okwave.jp"> <input type="hidden" name="timeid" value=""> <input type="hidden" name="number00" value="1"> <input type="hidden" name="number01" value="sent()"> <!--<input type="hidden" name="number01" value="204038054776">--> 当たり前ですが、コメントにしている部分にすると次のページでうまくいきます。 </form> </BODY> </HTML>

  • jspでjavascript関数へ引数を渡す方法

    最近Webアプリの勉強をし始めたばかりの初心者です。 今、jspでjavascript関数へ引数を渡す方法がうまくいかず困っています。 以下はjspファイルの該当部分の抜粋です。 やりたいこととしては、画面上で参照ボタンを押したときに、"reference"という文字列を 一度javascript関数を介してサーブレットへ渡すということです。 <head> <script type="text/javascript"> <!-- function func(param){ alert(); document.getElementById("param").name = param; } // --> </script> </head> <form action="/tomcat_test/servlet/hello" method="POST"> <input type="hidden" name="param" id="param"> <input type="button" value="参照" onclick=<%= "func('reference')" %>/> </form> いろいろ調べてみたのですが、なかなかうまくいかずに困っています。 そもそも、参照ボタンを押してもonclickがうまく動いていないようで、 まずその問題を解決したいです。 onclickタグの使い方を間違っているのでしょうか。 よろしくお願い致します。

    • ベストアンサー
    • Java
  • HTMLのinputタグ数が変わる場合のjavascript処理

    HTML上にinputタグが複数あって、その値をJavascriptで配列として受け取るコーディングをしています。 例えばこんな感じで・・・ 【サンプル1】 <form method="post" action="***.cgi" name="form1" onsubmit="return valueCheck(this);"> <input type="hidden" name="wData" value="aaa"> <input type="hidden" name="wData" value="bbb"> </form> function valueCheck(wForm) { document.write('wData='+wForm.wData[0].value); document.write('wData='+wForm.wData[1].value); } ただ、inputが1つしかない時もあるのですが、そのときの値が配列で受け取れません。 下記のように修正すると動くので、配列じゃないただの値だと判断されているようです。 【サンプル2】 <form method="post" action="***.cgi" name="form1" onsubmit="return valueCheck(this);"> <input type="hidden" name="wData" value="aaa"> </form> function valueCheck(wForm) { document.write('wData='+wForm.wData.value); } inputの値がいくつあるのかは都度変わるので、1つの時でも配列で処理したいのですが どのように記述すればいいのでしょうか。

専門家に質問してみよう