3

ASP.NETにフォームが組み込まれています。最初のコントロールを使用すると、ユーザーはオートコンプリートリストから人を選択できます。ユーザーがEnterキーを押すと、ページが更新され、この最初のコントロールで取得した情報が複製されます。ページの更新からEnterキーの機能を削除しようとしています。このコードはすべてChromeとIE7/8/9で機能します(6については気にしないでください)。私が必要としているのは、Firefox以外のサポートしているすべてのブラウザで機能するためにfalseを返すことだけです。.click()は、キーに少し使いやすさを追加するためのボーナスです(これにより、コントロールがアクティブになり、チェックボックスをオンまたはオフにするなど)。

これはFirefox12では機能しません。クリックは発生しますが(必要なときにコードに到達したことを証明します)、ページは毎回更新されます。

focusNextInputfield()は、同様の質問からの提案の1つであり、私が望むことは何もしませんでした。意図したとおりに動作した可能性がありますが、ページが更新されたためわかりません。

私は自分自身でさらに別の同様の質問からpreventDefault()とstopPropagation()を見つけましたが、FFでは何もしませんでした。

私はそれの一体のために真を返すことさえ試みました。

   $(document).keydown(function (event) {
   //handles what happens when the user hits enter
       if (document.activeElement.nodeName !== 'TEXTAREA') {
           if (event.keyCode === 13 || event.which === 13) {
                $(document.activeElement).click();
               // $(document.activeElement).focusNextInputField();
                event.preventDefault();
                event.stopPropagation();
                return false;
           }
       }
    }); 

何らかの理由でFireFox12に影響を与えない提案やニュースを探していますか?そして、私はコードに到達し、すべてがエラーなしで正しく実行され、余分なコードがすべてある場合でも、前述のようにChromeとIE7/8/9で正しく実行されることを知っています。

そして、以前の反復を通じて、送信ボタンを強制的にクリックしようとしましたが、それでも更新されて検証され、全体的にユーザーエクスペリエンスが悪くなりました。

4

1 に答える 1

2

jQueryを使用しているように見えるので、必要なのはフォーム送信イベントでDefaultを防ぐことだけです。

$j("#form-id").submit(function(e) {
    e.preventDefault();
    ...
});

または:

$j("#form-id").submit(false);
于 2012-04-27T16:29:05.490 に答える