내가 뭘 잘못하고 있는지 궁금해.
$(".s").keypress(function(e) {
switch (e.keyCode) {
case 8: // Backspace
//console.log('backspace');
case 9: // Tab
case 13: // Enter
case 37: // Left
case 38: // Up
case 39: // Right
case 40: // Down
break;
default:
doSearch();
}
});
키를 doSearch()
눌렀을 때 함수가 실행 되기를 원합니다 Backspace. 현재 BackspaceChrome과 Safari를 누르면 아무 일도 일어나지 않습니다 .
어떤 아이디어?
답변
keyup
대신에 사용하십시오 keypress
. 사용자가 무언가를 누를 때 모든 키 코드를 얻습니다.
답변
나는 이것을 직접 만났다. 나는 .on
조금 다르게 보였지만 이것을했다 :
$('#element').on('keypress', function() {
//code to be executed
}).on('keydown', function(e) {
if (e.keyCode==8)
$('element').trigger('keypress');
});
여기에 내 작업을 추가하십시오. 사용자가 입력 한 ssn을 삭제해야하므로 jQuery 에서이 작업을 수행했습니다.
$(this).bind("keydown", function (event) {
// Allow: backspace, delete
if (event.keyCode == 46 || event.keyCode == 8)
{
var tempField = $(this).attr('name');
var hiddenID = tempField.substr(tempField.indexOf('_') + 1);
$('#' + hiddenID).val('');
$(this).val('')
return;
} // Allow: tab, escape, and enter
else if (event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||
// Allow: Ctrl+A
(event.keyCode == 65 && event.ctrlKey === true) ||
// Allow: home, end, left, right
(event.keyCode >= 35 && event.keyCode <= 39)) {
// let it happen, don't do anything
return;
}
else
{
// Ensure that it is a number and stop the keypress
if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105))
{
event.preventDefault();
}
}
});
답변
입력 사용 변경시에만 이벤트를 시작하려면 다음을 수행하십시오.
$('.s').bind('input', function(){
console.log("search!");
doSearch();
});
답변
.keypress ()에 대한 jQuery 문서에 따르면 인쇄 할 수없는 문자를 포착하지 않으므로 키 누르기에서 백 스페이스가 작동하지 않지만 키 다운 및 키 업에서 포착됩니다.
브라우저가 키보드 입력을 등록하면 키 누르기 이벤트가 요소로 전송됩니다. 이것은 Shift, Esc 및 삭제 트리거 키 다운 이벤트 (키 누르기 이벤트 제외)와 같은 수정 자 및 비 인쇄 키를 제외하고 키 다운 이벤트와 유사합니다. 플랫폼과 브라우저에 따라 두 이벤트 간의 다른 차이점이 발생할 수 있습니다. ( https://api.jquery.com/keypress/ )
어떤 경우에는 키업이 바람직하지 않거나 다른 바람직하지 않은 효과가 있고 키 다운이 충분하기 때문에이를 처리하는 한 가지 방법은 keydown
모든 키 스트로크를 포착하고 짧은 간격의 시간 초과를 설정하여 키를 입력 한 다음 처리하는 것입니다. 나중에.
jQuery(el).keydown( function() {
var that = this; setTimeout( function(){
/** Code that processes backspace, etc. **/
}, 100 );
} );
답변
