
問題の原因がJavaScriptの範疇なのか(JSなのかHTMLなのかIEなのか
CSSなのかそれとももっと別の部分なのか)どうかも分かりませんが、
以下のようにすると(恐らくIEのバグ?によって)IEでEnterキーで
サブミットできなくなります。
(テストのために重要な部分だけPerlで簡略化して出力しています)
#!perl
print "Content-type: text/html\n\n";
print <<"HTML";
<body onload="document.form1.style.display = 'block'; document.form1.input0.focus();">
<form name="form1" style="display: none;">
HTML
for(my $i = 0; $i < 50; $i++) {
print qq(<input type="text" name="input$i"><br>\n);
}
print <<"HTML";
<input type="submit">
<input type="reset">
</form>
</body>
HTML
概要
1. 画面外にはみ出す量のフォーム内容をdisplay: noneしてから
JavaScriptで表示します。
2. フォームにフォーカスを与えてEnterキーを押しても反応しません。
3. display: noneしなければEnterキーが効きます。
4. 一度画面内にサブミットボタンを表示させると効くようになりますが
サブミットボタンを画面から外した後に更新をかけるとまた効かなく
なります。
4. IE 以外では正常動作するようです(テストしたIEのバージョンは
6.0 SP2)。
説明が下手で分かりにくいかもしれませんがこれの原因の詳細と
対策はありませんか。
No.1ベストアンサー
- 回答日時:
display:none;をwidth:0; height:0; overflow:hidden;にしてはどうでしょう。
この回答への補足
ありがとうございます。
少々惜しいです。
元々は、JavaScriptが有効になっていない場合は<NOSCRIPT>でエラーを
出してフォーム自体を表示したくなかったため、CSSで非表示にして
onloadですぐに表示するようにしています。
しかし、overflowを使用すると確かにEnterでサブミットは効きますが
JSが無効になっているときに隙間が空いてしまいます。
(スクロールバーが表示されたりその前後の内容が離れて表示されます)
フォームを全部JSで出力するという手もありますが、JSではPerlの
ヒアドキュメントみたいなことができないはずなので面倒で、
どうしようかと思っています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
formで特定のinputを送信しない...
-
JSONで文字列が長い時
-
実行時エラー 3020の対策
-
セレクトボックスを非表示にし...
-
SELECT OPTIONの中身をコピペ...
-
関数「exists」と「defined」の...
-
インラインフレーム内へのリンク
-
プルダウンリストの背景色の指定
-
複数列を持ったリストボックス...
-
Application.ScreenUpdating = ...
-
メモリをアドレスを直接指定し...
-
シェルスクリプトで、空白(ス...
-
数値かどうかの判定方法
-
[python] 文字列を変数名として...
-
C言語のflagの使い方が分かりま...
-
セレクトボックスのselected属...
-
Pythonの np.indicesに関する質...
-
日付の差分の求め方(日、分)
-
16進の10進変換について
-
sendmailで複数の宛先にメール...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
formで特定のinputを送信しない...
-
子windowsからsubmit()後にclos...
-
CGIプログラムで得た結果を一行...
-
Infoseek地図の住所検索をホー...
-
display: none をすると Enter ...
-
Perl 初心者です。
-
elsif フォーム内のカーソルを...
-
ホームページビルダーのメール...
-
JSONで文字列が長い時
-
Application.ScreenUpdating = ...
-
メモリをアドレスを直接指定し...
-
セレクトメニューで2つの項目...
-
「*:*」って何を意味するのでし...
-
シェルスクリプトで、空白(ス...
-
実行時エラー 3020の対策
-
<SELECT>タグの折り返し
-
ACCESS テキストボックスを隙...
-
16進の10進変換について
-
vbaでxmlからNodeListでデータ...
-
VB6で、長い時間かかる処理...
おすすめ情報