0

次の問題:

ボタン付きのリストがあり、その後、新しいエントリを追加するためのボタン付きのテキストボックスがあります。どちらの場合も、リスト ボタンと追加ボタンはアクションを確認するための JavaScript ルーチンです。

ユーザーがテキストボックスでEnterキーを押すと、リストの最初のボタンが追加ボタンの代わりに呼び出されるという問題があります。そのため、ボタンの「onkeydown」イベントに JavaScript を追加し、「return false;」を使用します。戻るボタンが押されたことを確認した後に最初のボタンが呼び出されるのを避けるため。これは次の行で完全に機能します: onkeydown="if (event.which == 13) { return false; }" しかし、「return false;」の前に JavaScript コードを追加するとすぐに (確認メッセージと他の JavaScript ルーチンが必要です)、Firefox ブラウザーは onkeydown イベントで最初のボタンと JavaScript コードを呼び出します... この動作は Internet Explorer では発生しないようです。

私は何時間も解決策を見つけようとしましたが、解決策を見つけることができず、インターネット上で適切なヒントを見つけることもできません. 誰かがこの問題について私を助けてくれたら、とてもうれしいです。

誰もが間違った動作を再現できるコード サンプルを作成しようとしました。最後の入力コントロールで、onkeydown イベントを追加しました。テキスト入力フィールドで Enter ボタンを押すと、Firefox が最初のボタンの確認メッセージを表示する理由を教えてください。

<html>
<head>
</head>
<body>
    <form method="post" action="Test.html" id="ctl00">
    <div id="divTest">
        <table>
            <tr>
                <td>
                    Testline 1
                </td>
                <td>
                    <input type="submit" onclick="if (confirm('Sure?')) alert('the wrong postback'); else return false;" value="Test1" />
                </td>
            </tr>
            <tr>
                <td>
                    Testline 2
                </td>
                <td>
                    <input type="submit" onclick="if (confirm('Sure?')) alert('the wrong postback'); else return false;" value="Test2" />
                </td>
            </tr>
        </table>
    </div>
    <table>
        <tr>
            <td>
                Enter name:
            </td>
            <td>
                <input type="text" size="30" onkeydown="if (event.which == 13) { alert('test'); return false; }" />
            </td>
            <td>
                <input type="submit" title="Add it" onclick="alert('the correct postback')" />
            </td>
        </tr>
    </table>
    </form>
</body>

4

1 に答える 1

0

どこでも交換

type="submit"

type="button"

「Enter」を押してもフォームが送信されないようにします。

しかし、スキーム全体が奇妙です: フォームを送信しますか? もしそうなら、(いつものように)すべてのフィールドをチェックする関数を1つだけ持たないのはなぜですか?

于 2013-04-18T11:05:31.593 に答える