2012-08-06 2 views
0

내 생각에 관해서는 - 정말 미친 문제입니다. 논리는 아주 쉬운 것 같다 :하지만이 작동하지 않습니다 :)jQuerys keyup + counter와 관련된 문제

나는 스크립트의 작은 부분을 올렸습니다 :

jquery onkeyup event

코드 조각은 인스턴트 검색 제안입니다.

입력란을 흐리게하고 콘솔 (방화 광구)을 열고 화살표를 누르십시오. 화살표를 아래로 내려주십시오.

콘솔에서 변수를 볼 수 있습니다. 변수는 화살표 업/다운 키 1을 누를 때마다 추가되거나 제거되어야합니다.

그러나 방향을 "반대 방향"으로 설정하면 (예 : arrowDown -arrowDown -arrowDown - arrowUp) 카운터가 올바르게 작동하지 않는 것처럼 보입니다.

var c = 0; 
$('#h7_3').keypress(function(e) { 

    console.log('--------'); 
    console.log('c = ' + c); 
    console.log('Key: = ' + e.keyCode); 
    console.log('--------'); 

    if(e.keyCode == 38 || e.which == 38){ //38 = arrowUp 
     e.preventDefault(); 
    } 
    if(e.keyCode == 40 || e.which == 40) { //40 = arrowDown 
     e.preventDefault(); 
    } 
}); 

$('#h7_3').keyup(function(e) { 
    if(e.keyCode == 38 || e.which == 38){ //38 = arrowUp 
     c--; 
    } else if(e.keyCode == 40 || e.which == 40) { //40 = arrowDown 
     c++; 
    } 
}); 

나는 것이 정말 당신은 준비() 함수에 코드를 포장해야하고, 이후 기본적 방해하고,

인사말 :-) 몇 가지 팁에 대해 크리스

+0

의 키 누르기 이벤트가 키 업 이벤트 전에 트리거 : 또한, jQuery를이 e.which 정상화. –

+0

[아마도 이것은 도움이 될 것입니까?] (http://jsfiddle.net/HrJg9/) – Ohgodwhy

답변

0

happs 후자의 기능은 트리거되지 않습니다. 당신이 로그의 증가 또는 감소 값을 찾을 경우에 그래서 코드가 제대로 작동 생각

$(function() { 
    var c = 0; 
    $('#h7_3').on('keyup', function(e) { 
     if (e.which == 38 || e.which == 40) { 
      c = e.which == 38 ? c-1 : c+1; 
      console.log('--------'); 
      console.log('c = ' + c); 
      console.log('Key: = ' + e.which); 
      console.log('--------'); 
      e.preventDefault(); 
     } 
    }); 
}); 

FIDDLE

+0

감사합니다 ... 완벽하게 .. :) – user1580024