- PR -

jspにてScriptロードのタイミング

1
投稿者投稿内容
n.w
大ベテラン
会議室デビュー日: 2003/07/15
投稿数: 126
お住まい・勤務地: 神奈川
投稿日時: 2003-12-22 15:34
お世話になっています。早速なんですが、

jsp画面にて検索画面があるんですがボタンクリック時は入力情報(Inputタグ)より
入力された文字列をキーに検索をかけて正常に動作するのですが
その際、セッションの値(ID)を空のhiddenにセットして画面遷移を行って
いるのですが、検索ボタンに対してマウス操作やカーソルを合わせてReturnキーでなく
Inputタグ内にてReturnキーを押下時
入力情報のIDが渡らず(hiddenにセットされず)エラーとなってしまいます。

submitボタン内でスクリプトを以下のようにロードしています。
document.form.function_id.value = 'XXX001';
document.form.submit(); return false;


入力タグ内にてReturnキー押下ではスクリプトが呼ばれません。

仕様にはボタンクリック時としかありませんが、ユーザ側からしたら
確実に入力→Returnキーといった操作をしてしまうと思うので
対処したいのですが、こういった場合どのような処理をすれば
回避できるのでしょうか? どなたかご存知の方いらっしゃいましたら
よろしくお願いします。


ブラウザ IE6
サーバ Tomcat
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2003-12-22 16:39
JSPについては勉強してないので、JavaScriptの問題として。
コード:
submitボタン内でスクリプトを以下のようにロードしています。 
document.form.function_id.value = 'XXX001'; 
document.form.submit(); return false; 


ボタン内ではなくて、そのフォームのonSubmitイベント内に、同じスクリプトを記述すると動くかもしれません。
(この場合は、return trueにする必要があったかもしれませんが)
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-12-22 16:41
ども、ほむらです。
完全にJavaScriptの話だと思いますけど。。。
--------
えっとつまり。
検索ボタンをクリックした時以外の動作で画面遷移をすると
hiddenデータにセッションIDがはいらず、
次の画面でエラーになってしまうので

対策として
inputの部分ではEnterキーを無効にしたいということでよいのでしょうか?

とりあえずまず言えることは、inputタグの中でEnterを押して遷移しただけで
エラーとなってしまう作りそのものに問題があると思います。
formのonsubmitイベント内部で処理する形にすれば、エラーだけは発生しないはずです。

キー入力の無効についてですがonkeyupのイベントでfalseを
返す形を取れば良いだけです。(keyCodeに対してif文で判別すればよいですよね)
(一応cancelBubble?もtrueにしておいたほうが無難かも)
#個人的にはせめてクッキーくらいは使用したほうがいいのではないかとも思いますけど
もんも
常連さん
会議室デビュー日: 2002/10/01
投稿数: 24
投稿日時: 2003-12-22 16:41
もんもと申します。
onsubmitを使えば解決できると思います。
inputでreturnを押しても
submitボタンを押しても
送信前にonsubmitが動きます。

-------↓こんな感じ-----
<html>
<body>
<script language="javascript">
function submitA(){
alert(form.text.value);
}
</script>
<form id="form" onsubmit="submitA()">
<input type="text" name="text" id="text">
<input type="submit" value="submit">
</form>
</body>
</html>
もんも
常連さん
会議室デビュー日: 2002/10/01
投稿数: 24
投稿日時: 2003-12-22 16:47
> 仕様にはボタンクリック時としかありませんが、ユーザ側からしたら
> 確実に入力→Returnキーといった操作をしてしまうと思うので
> 対処したいのですが、こういった場合どのような処理をすれば
> 回避できるのでしょうか?

submitを押したときinputでreturnを押したときで
おんなじ動作じゃなくて
inputの時の送信を防ぎたいのですね。
質問の意味を読み違えました。
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2003-12-23 01:06
邪道かもしれませんが、
input type="submit"をやめてしまって、
<input type="button" value="send" onClick="sendNext();">
のような形だとTEXTフィールドでEnterを押しても
SUBMITされることはないと思います。
n.w
大ベテラン
会議室デビュー日: 2003/07/15
投稿数: 126
お住まい・勤務地: 神奈川
投稿日時: 2003-12-24 14:22
返事遅れましたが沢山のレスありがとうございました。
無事解決しました。

結局Formタグ内でonSubmitを呼んでInputのsubmit属性
ないでは何もしないという方法でうまくいきました。

Formタグ自体カスタムタグを使ってたんですが
onClickの処理を丸ごと渡してやることで修正を最低限に
抑えることができ、メンテもしやすくなりました。
1

スキルアップ/キャリアアップ(JOB@IT)