テキストボックスから勝手に画面遷移される

このQ&Aのポイント
  • J-BUilderを使って作成したテキストボックスからEnterキーを押すと勝手にサーブレットに遷移してしまうエラーが発生しています。
  • 最初は<Form name="Insert" Method="POST" Action="…">と設定していたが、ActionをJSP上のボタンが押された時に設定されるようにしたところ、そのページが表示される前に実行されるサーブレットに移動してしまいます。
  • HTMLの設定の問題かもしれませんが、ご存知の方がいらっしゃいましたら教えてください。
回答を見る
  • ベストアンサー

テキストボックスから勝手に画面遷移される。

urizakaです。 現在J-BUilderを使ってテキストボックスに入力された内容をDBに送るという JSPの画面を作っているのですが、そこでテキストボックスでEnterキーを押すと 勝手にサーブレットに遷移されるというエラーが発生してしまいます。最初は、 <Form name="Insert" Method="POST" Action="…"> (…にはサーブレットのアドレスが入ります) と設定しているので、それでActionに登録されたサーブレットに遷移してしまう のだと思い、ActionをJSP上のボタンが押された時に設定されるようにしたのですが、そうするとそのページが表示される前に実行されるサーブレットに移動してしまいます。もしかすると、HTMLの設定の問題なのかもしれませんが、すみませんが この件についてご存知の方がいらっしゃいましたら教えてください。  宜しくお願いします。

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

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

  • ベストアンサー
noname#3852
noname#3852
回答No.1

urizakaさん、こんにちは。  かかれている内容を見る限り、HTMLのフォームの問題ですね。jspで生成されるhtmlソースを、拡張子htmlで保存してそのhtmlファイルをブラウズしていただければ、jspの問題ではないとおわかりいただけると思います。  テキストフィールドでEnterを押すと、submitしてしまうのは、インターネットエクスプローラだけでなく、ネットスケープ4.7、6でも起きてしまうようですね。  解決方法の1つとして、JavaScript(Javaではないです)を利用することを提案します。  前置きとしてJavaScriptが有効なブラウザで、「ボタンを押す」、「submitしようとする」など何かしら動作するとイベントが発生します。イベントが発生したとき、そのフォーム部品に適切なイベントハンドラが設定されていると、そのイベントハンドラの内容が実行されます。といっても、JavaScriptをご存知ない場合、わかりませんね。  formからsubmitするとき、onsubmitハンドラが実行されます。このハンドラからfalseが戻されるとsubmitされず、画面も遷移しません。また、ボタンが押されるとonclickハンドラが実行されます。  以上を踏まえて、方針を。 まず変数を用意します。この変数の初期値はfalseとします。submitボタンが押されたら、その変数の値をtrueに変更します。フォームのonsubmitハンドラでその変数の値を戻します。 こうすることで、submitボタンが押された場合は、変数の値がtrueなのでsubmitされます。 一方、テキストフィールドでEnterが押された場合、変数の値がfalseのままなので、submitされず、画面遷移されません。 サンプルとして、以下に記します。後はurizakaさんが作成するシステムにあわせてカスタマイズできるようがんばってください。 <html> <body> <script laguage="javascript"> var submitIsOk = false ; </script> <form action="XXX" onsubmit="return submitIsOk"> <input type="text" size="20" /> <input type="submit" value="submitする" onclick="submitIsOk=true" /> </form> </body> </html>

関連するQ&A

  • JSPでメッセージボックスを表示したい

    urizakaです。 さて、早速質問したいのですが、現在作っているJSPのプログラムで ボタンを押すとFORMのActionに記述されているサーブレットに移動 してサーブレットを実行するかキャンセルするかという(いわゆるVB でいうところの)メッセージボックスを表示したいのですが、そのような 方法というのはあるのでしょうか?確か、javaにはメッセージボックス という概念が無かったような気もするので… 環境は、JBuilder4で、HTMLのソースコードは <Form Method="POST" Action="×××(ここにサーブレットの アドレスを入力)"> <Input type="submit" Value="押す"> </Form> です。  宜しくお願いします。

    • ベストアンサー
    • Java
  • 見えないテキストボックスを作りたい

    urizakaと申します。 さて、さっそく質問なのですが、目に見えないテキストボックスって作るのは可能なのでしょうか?  実は、現在JSPのプログラムを作っているのですが、その際、ページにテキストボックスがひとつしかない状態でそのテキストボックスにカーソルがある状態でEnterキーを押すと、勝手にサーブレットに飛んでしまうという症状が発生したため、もうひとつユーザーの目に見えないテキストボックスを作りたい(テキストボックスが二つある場合はそのような症状は起きない)と思い、<INPUT TYPE="TEXT" name="DUMMY" SIZE="0">と表示してもある程度の大きさのテキストボックスが表示されてしまいます。  いろいろと本などで調べてみたのですが、それらしいことすら書いていない状態なので・・・すみませんが、ご存知の方が教えていただけないでしょうか?  宜しくお願いします。

    • ベストアンサー
    • HTML
  • formでテキストとファイルタイプの同時受け渡し

    送信ボタンが押下されたとき、同じ遷移先の画面に「テキスト」「ファイル」タイプのデータを同時に受け渡せないことがわかりました。 (1) <form action="al.jsp" method="POST"> ⇒<input type="radio" name="1" value="2">の受け渡しが可能 (2) <form action="a.jsp" enctype="multipart/form-data" method="POST"> ⇒<input type="file" name="uploadfile" size="50">の受け渡しが可能 送信ボタン押下時に(1)テキスト(2)ファイルデータを同時に受け渡し、 a.jspからrequest.getParameter("1"); で値を取得する方法を教えて頂けないでしょうか。 現在は、 <form action ~> (1)input (2)input </form> の形式になっています。

    • ベストアンサー
    • HTML
  • テキストボックスの値のチェック

    テキストボックスの値が未記入であったときに、submitボタンを押したときのジャンプ先のページを変えたいときはどのようにすれば良いのでしょうか? <input type="text" name="Test" size="25"> ↑ これが未記入の時は、 <form action="http://aaa.html" method="post" name="test"> にジャンプして、もし値が入っているときは、 <form action="http://bbb.html" method="post" name="test"> にジャンプさせるっていう感じにしたいのですが... 宜しくお願いします。

  • formでテキストとファイルタイプの同時受け渡し

    以下の質問の続きなのですが、JAVAカテゴリを勧められましたのでこちらで質問させてください。 http://bekkoame.okwave.jp/question/selectbestanswer?aid=18429563&qid=6529772 使用言語はJSPです。 「送信ボタンが押下されたとき、同じ遷移先の画面に「テキスト」「ファイル」タイプのデータを同時に受け渡せないことがわかりました。 (1) <form action="al.jsp" method="POST"> ⇒<input type="radio" name="1" value="2">の受け渡しが可能 (2) <form action="a.jsp" enctype="multipart/form-data" method="POST"> ⇒<input type="file" name="uploadfile" size="50">の受け渡しが可能 送信ボタン押下時に(1)テキスト(2)ファイルデータを同時に受け渡し、 a.jspからrequest.getParameter("1"); で値を取得する方法を教えて頂けないでしょうか。 現在は、 <form action ~> (1)input (2)input </form> の形式になっています。 」

    • ベストアンサー
    • Java
  • テキストボックスが、縦長になる

    このokwaveの質問テキストボックスのようなテキストボックスを作りたいです。 パソコンだけの利用です。スマホ対応は不要です。以下のようなcgiを書きました。 textarea{ のwidtを増やしたり、col=を増やしたりしていますが、横幅が狭いままで、縦長のテキストボックスになります。 どうすればよろしいでしょうか? <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <style type="text/css"> textarea { width 1000ptx; height 40em; } </style> </head> <form action="insert_data.cgi" method="post"> <input type="hidden" name="mode" value="display_data"> Data text<br> <textarea name="data_text" value="" col="1000" rows="50"></textarea> <input type="submit" value="SUBMIT" style="font-size:x-large;" /> </form>

    • ベストアンサー
    • CGI
  • 携帯 JAVA JSP 画面遷移

    携帯のWebアプリを作成しており、ボタンごとに画面遷移させる方法を考えています。 以下はPC用に作成したJSP <script Language="JavaScript"> <!-- function inOut(flg){ if(flg){ lert("あ"); location.href='top.jsp'; }else{ alert("い"); location.href='top2.jsp'; } } // --> </script> <html> <head> <title>テスト</title> </head> <body> <form method="POST" action="top3.jsp"> <input type="button" name="in" onClick="inOut(true);" value="あ" /> <input type="button" name="out" onClick="inOut(false);" value="い" /> <input type="submit" name="back" value="う" /> </form> </html> 現状の問題点は2点あり、 1.携帯はJavaScriptが使用できない 2.<input type="button"~ とするとテキストボックスのような見栄え・機能になってしまう。 携帯Webアプリの場合、ボタンごとの画面遷移はどのように行えばよいのでしょうか?

  • 「テキストボックス→Enterキー」でページが切り替わらない

    下記のようなフォームを作成しています。 (1)テキストボックスに値を入力する (2)「送信ボタン」またはEnterキーを押す (3)postにテキストボックスで入力した値が代入され、actionで設定したPHPファイルを読み込む (2)のEnterキーを入力したときになにもアクションが起こりません。 考えられる原因や対応方法をお願いします。

    • ベストアンサー
    • PHP
  • テキストボックスに遷移するごとに○が追加されるjsp

    こんにちは。 前にも質問させていただきましたが、再度お願いします。 画像のようなテキストボックスがあり、OKボタンを押下するごとに○が1つずつ追加され、全部埋まった状態でOKを押すとまた最初からになるというjspなんですが、下記コードまではこぎつけましたが、分からなくなりました。 ------------------------------------------------- <%@page language="java" %> <%@page contentType="text/html;charset=Shift_JIS" %> <% int index = -1; request.setCharacterEncoding("SHIFT_JIS"); String strBox=request.getParameter("box"); if(strBox!=null){ session.setAttribute("box",strBox); %> <HTML><HEAD><TITLE>問題1</TITLE> </HEAD><BODY> 問題1<BR> <FORM ACTION="mondai1.jsp" METHOD="post"> <% for(int i=0; i<9; i++){ String value=""; if(i<=index){ value="○"; } %> No.<%=i+1%><input type="text" name="box" value="<%=value%>"><BR> <%}%> <% index++; %> <INPUT TYPE="submit" VALUE="ok"> </FORM> </BODY></HTML> ------------------------------------------------- 以上がコードです。 1回目は上手くいきますが、2回目以降もテキストボックスの中に○が追加されません。 「session.getAttribute()」の使い方がよく分かりません。 画像は1枚目が1番最初or全部埋まってからまた戻ってきたもの、2枚目が3回目、3枚目が9回目のものです。 ご教示お願いします。

    • ベストアンサー
    • Java
  • Servlet+JSP連携

    Tomcat6.0を用いてSSL通信のテストプログラムを作成しています。 以下の順で実行するとサーブレットのdoPostが実行されずHTTP 404でエラーとなってしまいます。 1の地点で証明書がエラーになっているのが問題なのでしょうか? httpの場合は通常に遷移するため何か設定が必要なのでしょうか? 1.https://localhost:8443/Testを実行するとindex.jspが実行されます。 2.index.jsp内から <form action="TestServlet" method="POST"><input type="submit" value="a"/> でサーブレットに遷移したいです。  URLはhttps://localhost:8443/Test/TestServletとなっているため問題ないと思われます。

    • ベストアンサー
    • Java

専門家に質問してみよう