2011-08-11 20 views
0

大丈夫ためので、私はちょうどそれがここJavascriptを - >ホットキー - >を無効にし、入力フィールド

$(document).keypress(function(e){ 

     if(e.which == 13){ 
     //Enter key is press do what you want 
    } 
    else if(e.which == 67 || e.which == 99){ 
     //C key is press do what you want 

     window.location.href = "/html/credits.php"; 

    } 
    else if(e.which == 32){ 
     alert("Space pressed"); 

    } 

    }); 

    $("input.registerform").keypress(function(e){ 

    e.stopPropagation(); }); 

を止めることはできません作業ホットキーは、私の入力フォームのクラス、私はそれを停止するために持っているものである必要があり"registerform bgcolor2"ですが、 "input.registerform"と "input.registerform bgcolor2"のどちらでも動作しませんでしたIDが登録されていないのでIDを追加しようとしました:/

私のAJAX?または私はここに何かを逃していますか?

(申し訳ありませんが、私はこれを転載>ちょうど新しいアカウントを作り、戻って私の古い質問を見つける傾ける。<)

答えて

0

私は、このような、以来、あなたはすべての入力要素を受け入れ、文書オブジェクトにイベントリスナーをアタッチすることを、理解してテキストフィールド、選択などがホットキーを処理するため、通常の動作が失われます。

jquery.hotkeysプラグインのline 44をご覧ください。初期化時にすべての入力受け入れ要素を除外します。

P.S.多分このプラグインはあなたの仕事のために全体として便利です。

キーは、イベントがテキスト入力から来ているかどうかを確認することです。

# only bind event to text-accepting elements, if they have been 
# explicitly selected 
# if your event variable happens to be called e, please adjust accordingly 
if (this !== event.target && 
    (/textarea|select/i.test(event.target.nodeName) || 
     event.target.type === "text")) { 
    return; 
} 

あなたのコードが今立っているとして、あなたは匿名関数の先頭にこのスニペットを挿入する必要があるでしょう、あなたはKeyPressイベントに特異的に結合します。

+0

あなたの提案は何ですか、私が持っているコードを削除して、jquery.hotkeysを取る?そして、これを正しく設定する方法は、申し訳ありませんが、JavaScriptは私がかなり新しいものです。 –

+0

はい、jquery.hotkeys.jsを調べることをお勧めします。 githubにあるプロジェクトのホームページを見てください。このプロジェクトには、短いREADMEがあります(プロジェクト自体の例もあります)。 – miku

+0

さて、私が今使っているスクリプトは、完全に理解しているリダイレクトが完璧に機能しているだけです。これを行うためのjqueryスクリプトを見ると、テキストフィールド/入力フィールドで「非アクティブ」にしたいと思っています。どこから始めるのか。 –

0

うまく:)

例動作しているようだ: まず例:http://jsfiddle.net/HenryGarle/SG5Um/ 第二の例:http://jsfiddle.net/HenryGarle/SG5Um/1/

新コード:ONLY registerformで、この何を使用して

$(document).keypress(function(e){ 

    if(e.which == 13){ 
     alert("Enter"); 
    } 
    else if(e.which == 67 || e.which == 99){ 
     alert("c"); 
     //window.location = 'whateveryouwant'; 
    } 
    else if(e.which == 32){ 
     alert("Space pressed"); 
    } 

}); 

$("input.registerform.bgcolor2").live('keypress', function(e){ 
    alert("Stopped"); 
    e.stopPropagation(); 
}); 

Stops: 
<input class="registerform bgcolor2" type="text"> 
<br> 
Does not stop: 
<input class="registerform" type="text"> 

は動作しますがALSOにbgcolor2がある場合、イベントは停止します。

+0

私はアラートではなくリダイレ​​クトをしています.2番目にclass = class = "registerform bgcolor2"と3番目に、私は自分の入力があるページにjavascriptを持っていません。別のファイルにjavascriptがありますコマンド –

+1

でアラートを置き換えることができます。あなたは何をしたいのかでアラートを置き換えることができます。どのように問題があるかはわかりません。クラスについては、registerformがあります。 2番目のセレクタ(私は私の答えを修正するでしょう)を追加することができますし、同じファイル内にそれを持っていないとしても、私の答えの中で更新するライブイベントを使うことができます。 jQueryが一般的なjavascriptとプログラミングです。私は本当にあなたが行くべきであり、ドキュメンテーションを読むべきだと思っています。これはチュートリアルのサイトではなく、技術的なヘルプサイトです。 – Henry

+0

これは今あなたが望んだことをしますか? – Henry

関連する問題