jQuery를 사용하여 keypress 이벤트에 바인딩 할 때 어떤 키를 눌렀는지 어떻게 알 수 있습니까?
$('#searchbox input').bind('keypress', function(e) {});
을 (를 ENTER) 누르면 제출을 트리거하고 싶습니다 .
[최신 정보]
내가 (또는 더 나은 : 하나의) 대답을 찾았지만 변화의 여지가있는 것처럼 보입니다.)
keyCode
그리고 which
특히 내가 찾고 ENTER있는 경우 유니 코드 키 가 아닌 차이점이 있습니까?
일부 브라우저는 하나의 속성을 제공하고 다른 브라우저는 다른 속성을 제공합니까?
답변
실제로 이것은 더 낫습니다 :
var code = e.keyCode || e.which;
if(code == 13) { //Enter keycode
//Do something
}
답변
이 시도
$('#searchbox input').bind('keypress', function(e) {
if(e.keyCode==13){
// Enter pressed... do anything here...
}
});
답변
jQuery UI를 사용하는 경우 공통 키 코드에 대한 번역이 있습니다. 에서 UI / UI / ui.core.js :
$.ui.keyCode = {
...
ENTER: 13,
...
};
tests / simulate / jquery.simulate.js에도 일부 번역이 있지만 핵심 JS 라이브러리에서는 찾을 수 없습니다. 당신이 마음에, 나는 단지 소스를 grep’d. 이 매직 넘버를 제거하는 다른 방법이있을 수 있습니다.
String.charCodeAt 및 .fromCharCode를 사용할 수도 있습니다.
>>> String.charCodeAt('\r') == 13
true
>>> String.fromCharCode(13) == '\r'
true
답변
jQuery를 사용한다고 가정하면 절대적으로 .which를 사용해야합니다. 예, 브라우저마다 다른 속성을 설정하지만 jQuery는 속성을 정규화하고 각 경우에 .which 값을 설정합니다. http://api.jquery.com/keydown/의 설명서를 참조 하십시오.
어떤 키를 눌렀는지 확인하기 위해 핸들러 함수에 전달 된 이벤트 객체를 검사 할 수 있습니다. 브라우저는 서로 다른 속성을 사용하여이 정보를 저장하지만 jQuery는 .which 속성을 정규화하여 키 코드를 검색하는 데 안정적으로 사용할 수 있습니다.
답변
…이 예제는 양식 제출을 방지합니다 (일반적으로 키 스트로크 # 13을 캡처 할 때 기본 의도).
$('input#search').keypress(function(e) {
if (e.which == '13') {
e.preventDefault();
doSomethingWith(this.value);
}
});
답변
편집 : 이것은 IE에서만 작동합니다 …
나는 이것이 오래된 게시물이라는 것을 알고 있지만 누군가가 이것을 유용하게 사용할 수 있습니다.
키 이벤트가 맵핑되므로 키 코드 값을 사용하는 대신 키 값을 사용하여 좀 더 읽기 쉽게 만들 수 있습니다.
$(document).ready( function() {
$('#searchbox input').keydown(function(e)
{
setTimeout(function ()
{
//rather than using keyup, you can use keydown to capture
//the input as it's being typed.
//You may need to use a timeout in order to allow the input to be updated
}, 5);
});
if(e.key == "Enter")
{
//Enter key was pressed, do stuff
}else if(e.key == "Spacebar")
{
//Spacebar was pressed, do stuff
}
});
이 블로그 에서 얻은 매핑 된 키가있는 치트 시트가 있습니다.
답변
// in jquery source code...
if (!event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode)) {
event.which = event.charCode || event.keyCode;
}
// So you have just to use
$('#searchbox input').bind('keypress', function(e) {
if (e.which === 13) {
alert('ENTER WAS PRESSED');
}
});