10

テキストボックスとボタンのあるフォームがあります。IE は、Enter キーが押されたときにフォームを送信しない唯一のブラウザーです (FF、Opera、Safari、Chrome などで動作します)。私はこのjavascript関数がIEを振る舞わせようとすることを発見しました。しかし役に立たない:

function checkEnter(e){
    var characterCode
    if (e && e.which) {
        e = e
        characterCode = e.which
    } else {
        e = event
        characterCode = e.keyCode
    }
    if (characterCode == 13) {
        document.forms[0].submit()
        return false
    } else {
        return true
    }
}

実装:

searchbox.Attributes("OnKeyUp") = "checkEnter(event)"

何かアドバイス?

編集: CodeProject の このページでは、Dillieの発言の概要が説明されており、完全に機能します。

4

9 に答える 9

25

ページの非表示の div にテキスト入力を作成するだけです。これにより、IE のバグが回避されます。

divの例:

    <!-- Fix for IE bug (One text input and submit, disables submit on pressing "Enter") -->
    <div style="display:none">
            <input type="text" name="hiddenText"/>
    </div>
于 2009-01-28T15:10:43.807 に答える
13

私が過去に行ったもう 1 つのことは、フォーム領域を Panel にラップし、DefaultButton 属性を送信ボタンに設定することです。これにより、パネル領域でフォーム要素にフォーカスがある限り、Enter キーが送信に効果的にマップされます。

于 2008-11-06T22:14:51.150 に答える
3

ここにこの問題の良い記事と、素敵なjqueryベースの解決策があります:

http://www.thefutureoftheweb.com/blog/submit-a-form-in-ie-with-enter

于 2011-02-10T05:41:48.950 に答える
2
// Use the following Javascript in your HTML view
// put it somewhere between <head> and </head>

    <script language="JavaScript" type="text/javascript"><!--
    function KeyDownHandler(btn)
    {
      if (event.keyCode == 13)
      {
        event.returnValue=false;
        event.cancel = true;
        btn.click();
      }
    }
    // -->
    </script>

    // Put this in your TextBox(es) aka inside <asp:textbox ... >
    onkeydown="KeyDownHandler(ButtonID)"
于 2008-11-06T22:05:01.670 に答える
1

ボタンを非表示にする - display:none を使用せず、次のスタイルを使用します。

position: absolute; /* no longer takes up layout space */
visibility: hidden; /* no longer clickable / visible */

これを行うと、他の要素や非表示の入力を追加する必要がなくなります。

于 2012-06-14T15:36:26.887 に答える
1

を使用するdisplay:noneと、IE にボタンが表示されないため、ボタンを使用してフォームを送信できません。代わりに、z-index絶対配置を使用して、別の要素の下に非表示にすることができます。たとえば、次のスタイルを使用します。

position:absolute; bottom: -20px; left: -20px; z-index: -1;

今でもそこにあり、IE で使用できますが、別の要素の下に隠されています。

于 2009-06-01T23:04:22.863 に答える
0

これは、単一テキストフィールド入力に対するIEの特殊性によるものです。

簡単な解決策は、別の非表示のテキストフィールドを追加して、単一のテキストフィールドを持つページを停止することです。

<input type="text" name="hidden" style="visibility:hidden;display:none;" />

参照して ください。http://www.4guysfromrolla.com/articles/060805-1.aspx

于 2012-03-14T09:45:45.677 に答える
-1

POST の代わりに GET を使用しますか? URLが長すぎませんか?私はそれを見た...

于 2008-11-06T22:08:29.353 に答える
-1

基本的に、フォームにはボタン、input type="submit"、または input type="image" のいずれかが必要であり、入力時にフォームを送信する組み込みの動作を有効にします。送信するのに JavaScript は必要ありません。

于 2008-11-06T22:41:27.447 に答える