[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
新たな開発現場に入って一ヶ月・・・
プログラムを大量生産していざ試験フェーズに入ると
謎のバグに遭遇するもので(~~)
JSPで画面上のテーブル行を生成する箇所で
データが1行だけの場合にその中のフォームに
カーソルを当ててEnterキーを押下すると落ちる。。
画面上のボタンにフォーカスはあたっているが
その中のJavaScriptが動作せずにSUBMITされている模様。
デバッグしてみるとServletの処理には入ってきているが、
画面から受け渡されるリクエストが空っぽ。
2時間ハマって4年前に同様の現象に遭遇したことを
思い出した。
IEだと画面上のフォーム内にテキストフィールドが1個しかない場合に
submitボタンの情報が送られない件
これまだ直ってないのかよOTZ
IE8になっても直ってないということはMSは
仕様で押し通すつもりなんでしょうか。。。
回避策は他のサイトにあるJavaScriptでのエレメント個数把握
後のダミーINPUTを検討したが、JavaScriptがこけたり
顧客の端末でオフられてたら画面が落ちるのも嫌なのでJSPで対処しました。
<JavaScriptでやる場合>
var f = document.forms;
for(var elm, i = 0; elm = f[i]; i++) {
var input = document.createElement('input');
input.style.display = 'none';
elm.appendChild(input);
}
<JSPでやる場合>
--hoge.css--
/* フィールドを透明にする */
.none {filter: alpha(style=0, opacity=0);}
--hoge.jsp--
<%
List results = XXX;
// ループの中ですよ
for (int i = 0 ; i < results.size() ; i++) {
// 取得件数が1件の場合ダミーのINPUTフィールドを生成
if(results.size() == 1){
%>
<INPUT CLASS="none" TYPE="text" VALUE="" TABINDEX="-1">
<%
}
}
%>

