2012-04-21 9 views
-3

私は問題に直面しています。「Enter」キーが押されたときにHREF(JS関数を呼び出す)がトリガされないようにする方法はありますか?

私はそれをクリックすると、javascript関数 "delete_element_on_page"を呼び出すhrefがあります。

私はマウスでHREFをクリックすると、すべてが問題なく機能が呼び出されます。

しかし、HREFにフォーカスがあるので、私のEnterキーを押し続けると、関数は何度も何度も呼び出され、望ましくない結果につながります。

これを防ぐにはどうすればよいですか?

私は私の関数が 呼び出されたときのhrefに焦点をぼかし 1を考えていた - >私はこれを行うことができますが、これは私がjquery.blurができるので、手作業で一つ一つのHREFのためにこれをしなければならない意味します個々の要素レベルでのみトリガされます。 - >あるいは、どの要素にフォーカスがあるかにかかわらず、普遍的なぼかしを行うことができるjavascriptに相当するものがありますか?

OR

  1. 無効は HREFのクリックをトリガーからキーを入力 - >これでも可能ですか?そして、コードの複雑さ/互換性などの点で、もしそうであれば、価値が私の中に...

本当にありがとうございました:)

答えて

1

はあなたのイベントを結合して、HTMLタグ内のJavaScriptトリガーを配置しないようにすることができます。

<script src="http://code.jquery.com/jquery.min.js"></script> 
<script> 
    $("#myelementid").bind("click",function(e){ 
     e.preventDefault(); // important, to prevent trigering the default a href 

     // your code goes here 

     $(this).blur(); 
    }); 
</script> 
+0

ありがとうございました!私は、この方法でバインドすると、「入力」キーに関して異なる動作になることはわかりませんでした。 – sprockett

0

あなたはクリックイベントがjqueryのことでそれを扱うバインドすることができ、JS関数を呼び出すためのhrefを使用することは推奨されません:このようにすることをあなたはjQueryの(簡単に、より信頼性の高い方法)により

$("a#id").click(function(){ 

// the code goes here; 

}) 
+0

ありがとう!私は、この方法でバインドすると、「入力」キーに関して異なる動作になることはわかりませんでした。 – sprockett

1

上記の答えは、キーボードのクリックとマウスのクリックの両方をブロックし、Enterキーがそのリンク上で何かをするのをブロックします。 #2に対応します

<a id="fail" href="http://jquery.com">default click action is prevented</a> 
<script> 
$("#fail").keydown(function(event) { 
    event.preventDefault(); 
}); 
</script> 
関連する問題