2012-04-27 1 views
3

私はASP.NETで構築されたフォームを持っています。第1の制御は、ユーザが自動補完リストから人を選択することを可能にする。ユーザーがenterを押すと、ページが更新され、この最初のコントロールで取得された情報が複製されます。私はページをリフレッシュすることからエンターキーの機能を削除しようとしています。このコードはすべてChromeとIE7/8/9で動作します(6は気にしないでください)。私が必要とするのは、Firefox以外でサポートしているすべてのブラウザで動作することが間違っていることです。 .click()は、キーに使い勝手のビットを追加するためのボーナスです(コントロールを有効にし、チェックボックスをオンまたはオフにするなど)。EnterボタンがFirefox 12のデフォルト動作を実行しないようにするにはどうすればよいですか?

これはFirefox 12では動作しません。 (私が望むときにコードに到達したという証拠)が発生しますが、ページは毎回リフレッシュされます。

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; 
      } 
     } 
    }); 

私はFireFox 12で何の効果もありません。何らかの理由で提案やニュースを探していますか?私は、コードに到達したことを知っています。エラーは発生せず、すべての余分なコードでも正常に動作しますが、ChromeとIE 7/8/9では正常に動作します。

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

答えて

2

jQueryを使用しているようですので、フォーム送信イベントでデフォルトを防ぐ必要があります。

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

または:

$j("#form-id").submit(false); 
+0

が、これはあなたが提出することができませんではないでしょうか?クリックしても? –

+0

はい。ボタンをイベントクリックするためにオブザーバーを追加して、必要な処理を行う必要があります。 –

+0

私はかなり理由を知りませんが、私は '$(文書).submit(関数(E) {e.preventDefault() })でした;' をそして私はに特別な何かをする必要はありませんでしたフォームが正常に機能していることを確認し、問題を解決してください。ご協力いただきありがとうございます。 – Reafexus

関連する問題