2011-10-03 9 views

答えて

22

イベントオブジェクトのwhichプロパティを使用します。これは、コード・トリガーのイベントのundefinedする必要があります:

$("#someElem").click(function(e) { 
    if(e.which) { 
     //Actually clicked 
    } 
    else { 
     //Triggered by code 
    } 
}); 

は、ここでは上記のworking exampleです。コメント

input要素にフォーカスがあるときEnterキーを押すと、clickイベントをトリガすることができます基づいて

更新。コードでトリガされたクリックと他のすべてのクリック(マウスまたはキーボードでトリガされたもの)を区別したい場合は、上記のメソッドが正常に動作するはずです。しばらくの間

$("#someElem").click(function(e) { 
    if(e.originalEvent === undefined) { 
     //triggered 
    } 
    else { 
     //clicked by user 
    } 
}); 
+1

''はキーボードのアクティビティを検出できますが、OPはマウスのアクティビティのみを望みます – diEcho

+3

キーボードでどのように要素をクリックできますか? –

+1

あなたは決して入力を押してログインしたことはありませんか? – awm

12

あなたはe.originalEventをチェックする必要があります。 Webkitもこれをサポートします。

現在、保証する方法はありません。

+0

**ライブデモ:** http://jsfiddle.net/frw8j/3/ –

+0

これはtriggerHandlerとnotとを区別しているようですが、私がやったときには $( "#someElem")[0] .click() 実際の「クリック」として扱われました。 –

1

待ちをしてevent.isTrustedを使用する - そのIE9、オペラ12、およびFirefoxナイトリーでサポートされている:

+2

私は同意しない:e.originalEventはトリックを行う –

+0

あなたのピンクの眼鏡を壊したくないが、jQueryは魔法の杖ではない... – c69