プロが教えるわが家の防犯対策術!

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

A 回答 (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>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!