No.1ベストアンサー
- 回答日時:
テキストボックスでエンターが押されることによってフォームがサブミットされる場合、どのテキストボックスでエンターが押されたかについての情報は、POSTのパラメータに含まれていません。
ですので、サーブレット側だけの対応では、区別することができません。
HTML側(クライアント側)で、JavaScript等で何らかの処理を行う必要があります。
単純なサンプル、HTML
<html>
<head>
<script type="text/javascript">
<!--
function setTarget(e){
if (!e) {
e = window.event;
}
if(e.keyCode == 13) {
document.form1.target.value = e.target.name;
document.form1.submit();
return false;
}
return true;
}
// -->
</script>
</head>
<body>
<form name="form1" action="aaa/bbb" method="post">
<input type="text" name="text1" onKeyPress="return setTarget(event);"><br>
<input type="text" name="text2" onKeyPress="return setTarget(event);"><br>
<input type="submit" name="button1" value="送信" />
<input type="hidden" name="target" value="" />
</form>
</body>
</html>
このサンプルでは、テキストボックスでエンターが押された場合は、targetにエンターが押されたテキストボックスのnameが設定されて、サブミットされます。
サーブレット側では、
if (req.getParameter("button1") != null) {
// button1がクリックされたときの処理
} else if ("text1".equals(req.getParameter("target"))) {
// text1でエンターが押されたときの処理
} else if ("text2".equals(req.getParameter("target"))) {
// text2でエンターが押されたときの処理
}
で区別して処理できます。
ボタンをクリックしたときにもtargetに何か含まれている可能性もありますので(ブラウザの"戻る"ボタンで戻ったあとの場合など)、ボタンではないことを確認してから、テキストボックスの処理を行った方がいいと思います。
上のサンプルは、十分に検証したものではありませんので、ブラウザの種類やバージョンによっては上手くいかないかもしれません。また、当然ですが、クライアント側でJavaScriptが有効になっていない場合も上手くいきません。
参考:Enterを押すとsubmitされる場合についての解説
http://www.programming-magic.com/20080119212425/
この回答へのお礼
お礼日時:2014/03/18 18:47
ご回答ありがとうございます。
お蔭様で作りたかったものが作ることが出来ました。
”戻る”で戻ったときの対応などは自分では気付けなかったと思うので、とても助かりました。
No.2
- 回答日時:
HTML内のスクリプトによる補助がないと不可能かと思います。
たとえば
フォーム内に隠しデータ要素 focusin を加える
<input type=hidden name=focusin>
JavaScript で、特定要素の focus/blur イベント時に focusin を更新
<script>
特定要素.onfocus = function(e){ focusin.value = 特定要素の名前 }
特定要素.onblur = function(e){ focusin.value = '' }
</script>
送信先の doPost にて、パラメタ focusin が特定要素の名前の場合、処理を分岐させる
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- Access(アクセス) アクセス 意図せずサブプロシージャを移動してしまうのを止めたい 1 2022/09/02 09:19
- Visual Basic(VBA) visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ 1 2023/02/08 00:18
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- HTML・CSS 検索窓とcssハックについて 3 2022/04/22 12:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
リクエストに応じたselectedの...
-
フォーム上で押されたボタンに...
-
「<c:forEach タグが終了し...
-
Servletへフォームから配列を送...
-
テキストボックスで入力したデ...
-
困っています
-
JSPで複数テーブルのSQL実行後...
-
JSPとサーブレット間での画面遷...
-
フォームで同じ複数のnameで違...
-
ボタンクリック-JSP判断
-
ラジオボタンの選択肢をサーブ...
-
checkboxのvalue値を動的にしたい
-
JSPでのリストボックス表示
-
int型の内容をbyteの配列にコピー
-
値をフォームに反映させるには…
-
strutsのhtml:linkの使い方
-
JSP+Servletで終了ボタン
-
JSPでのサブミット判定
-
struts bean:defineについて
-
三菱GOTの画面切り替えについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォーム上で押されたボタンに...
-
リクエストに応じたselectedの...
-
フォームで同じ複数のnameで違...
-
int型の内容をbyteの配列にコピー
-
javaでDBから取得したデータのJ...
-
「<c:forEach タグが終了し...
-
strutsを使用したjspでjavascri...
-
EL式 true falseを表示
-
JSPでのリストボックス表示
-
StrutsでPOSTのデータ(リクエ...
-
formでテキストとファイルタイ...
-
jspファイルで注文フォームの合...
-
jspでjavascript関数へ引数を渡...
-
ラジオボタンの選択肢をサーブ...
-
struts-config.xmlの設定
-
動的に作成したラジオボタンの...
-
JSP+Servletで終了ボタン
-
Servletへフォームから配列を送...
-
Strutsでの入力データチェック...
-
JSPとサーブレット間での画面遷...
おすすめ情報