2017-01-04 6 views
2

ボタンがあります。私は、ユーザーがそれをクリックしたのか、enterを押したのかを検出し、どのイベントが発生したのかを検出したい。しかし、私がenterを押すと、クリックと入力ハンドラの両方が処理されます。Jquery:クリックと入力ハンドラが異なります

どうすればこの問題を解決できますか?

HTML:

<button type="button"> 
    Click me 
</button> 

のjQuery:

$("button").keydown(function(e){ 
    var keyCode = e.keyCode || e.which; 
    if(keyCode === 13){ 
     $("button").after("<div> enter was pressed </div>"); 
    } 
}) 

$("button").click(function(){ 
    $("button").after("<div> click event </div>"); 
}) 

https://jsfiddle.net/75wbo7d2/1/

答えて

1

Working fiddle

使用keyPress代わり:

$(document).keypress(function(e) { 
    var keyCode = e.keyCode || e.which; 
    if(keyCode === 13){ 
    $("button").after("<div> enter was pressed </div>"); 
    } 
}); 

$("button").click(function(){ 
    $(this).blur().after("<div> click event </div>"); 
}) 

は、この情報がお役に立てば幸いです。あなたがそれを行うことができますe.preventDefault();

$(document).keypress(function(e) { 
 
    var keyCode = e.keyCode || e.which; 
 
    if(keyCode === 13){ 
 
    $("button").after("<div> enter was pressed </div>"); 
 
    } 
 
}); 
 

 
$("button").click(function(){ 
 
    $(this).blur().after("<div> click event </div>"); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button type="button"> 
 
    Click me 
 
</button>

+0

ありがとうございました!これはうまく動作しますが、誰かが初めてエンターを押した場合は例外です。 – themis93

+0

あなたが歓迎して、私が助けることができたことをうれしく思います。初めてドキュメントに焦点を当てただけなので、イベントは 'document'に添付されています。 –

1

ルックhttps://jsfiddle.net/75wbo7d2/3/ 。 乾杯[

]
+0

ありがとうございます。私はどこかで、preventDefault()を使用することは問題を引き起こす可能性があるため、非常に良い選択肢ではないことを読んでいます。そうですか? – themis93

関連する問題