2011-10-04 2 views
1

다음 함수는 입력에 3 자 이상의 문자가 있고 그 자리 표시 자와 같지 않은 경우 패널을 표시해야합니다.문자열 길이 오 실화를 기반으로 한 JQuery 함수

$('#search').keydown(function(){ 
      $('#header .suggestion').removeClass('visible'); 
      var slength = $(this).val(); 
      if(slength.length > 2 && slength != $(this).attr('placeholder')){ 
       //activate AJAX script 
       $('#header .results').addClass('visible'); 
      } 
      else { 
       $('#header .results').removeClass('visible'); 
      } 

    }); 

대신 5 자까지 표시됩니다. 왜. 브라우저의 입력을 처리하기 전에 놀라운

+0

바이올린을 만드실 수 있습니까? www.jsfiddle.net –

+0

@RussC 지금은 시간이 없지만 나중에 보겠습니다. –

+0

더 많은 코드가 도움이 될 수 있습니다. 처음에는이 부분'slength! $ (this) .attr ('placeholder')'가 문제의 원인 일 수 있습니다. – rgin

답변

0

keydownkeypress 이벤트라고한다. 이러한 이벤트 동안 개발자는 사용자가 텍스트를 입력하지 못하도록하는 방법을 추가 할 수 있습니다.

따라서 keydown 함수를 청취 할 때 $(this).val()은 "예상"값을 반환하지 않습니다.

이미지는 (사용자가 이미 입력 필드에 초점을 맞추고있다) :

{ } <-- Empty input field 
    [X] <-- Use presses the X key 
    **KEYDOWN** 
    **KEYPRESS** 
{X} <-- "x" appears in the text field 
    **KEYUP** 

입력의 "예상"값을 얻으려면, 당신은 keydown 대신 keyup 이벤트를 사용해야합니다.