2010-01-09 3 views
0

를 사용하여 텍스트 필드에 문자를 계산하는 데 도움이 필요 .여기 내 문제가 jQuery를

텍스트의 길이가 5자인 경우 "what"함수를 트리거하는 $ .click 함수도 추가합니다. 5 자 미만인 경우이 클릭 기능을 "사용 중지"해야합니다.

하지만 말하기가 쉽지 않습니다. 이것은 내가 지금 가지고있는 코드입니다. 작동하지 않습니다.

<input id="userName" name="userName" class="textfield50pc" type="text" maxlength="50" value=""/> 

jQuery('#userName').keydown(function() 
{ 
    if((jQuery(this).val().length + 1) == 5) 
    { 
     jQuery("#guide_btnCreateGuide").css({'background-position':'top', 'cursor':'pointer'}); 
     jQuery("#guide_btnCreateGuide").click(function() { do something }); 
    } 
    else if((jQuery(this).val().length - 2) < 5) 
    { 
     jQuery("#guide_btnCreateGuide").css({'background-position':'bottom', 'cursor':'default'}); 
     // Here I really would like to disable whatever I added in the OnClick above. But how? 
    }       
}); 

이 작업을 수행하는 데 도움이 필요합니다.

UPDATE 여기

이 스레드 another thread 도움에 기초 해결책이다.

 jQuery('#input_guideName').keyup(function(e) 
     { 
      if(this.value.length == 5) 
      { 
       jQuery("#guide_btnCreateGuide").css({'background-position':'top', 'cursor':'pointer'}); 
       jQuery("#guide_btnCreateGuide").bind('click', function() { 
        createNewGuide(); 
       }); 
      } 
      else if(this.value.length < 5) 
      { 
       jQuery("#guide_btnCreateGuide").css({'background-position':'bottom', 'cursor':'default'}); 
       jQuery("#guide_btnCreateGuide").unbind('click'); 
      } 
     }); 

답변

0

bind 클릭 이벤트가 5 자이고 unbind 덜합니다.

jQuery('#userName').keydown(function() 
{ 
    jQuery("#guide_btnCreateGuide").unbind('click'); 
    if((jQuery(this).val().length + 1) == 5) 
    { 
     jQuery("#guide_btnCreateGuide").css({'background-position':'top', 'cursor':'pointer'}); 
     jQuery("#guide_btnCreateGuide").bind('click', function() { do something }); 
    } 
    else if((jQuery(this).val().length - 2) < 5) 
    { 
     jQuery("#guide_btnCreateGuide").css({'background-position':'bottom', 'cursor':'default'}); 
    } 
} 
+0

그러나 나는 5보다 적은 각 keudown에서 "바인딩 해제"하겠습니까? 어쩌면 상관 없어요? 내가 가지고있는 또 다른 문제는 값이 5보다 작 으면 버튼 색상을 변경할 수 없다는 것입니다. 카운트가 모두 잘못되었습니다. ( – Steven

+0

keydown 함수가 약간 변경되었습니다.이 방법이 더 좋다고 생각합니다. 이벤트 바인딩을 유지하십시오. "카운트가 잘못되었습니다."라는 의미를 얻지 못했습니다. 버튼의 색상과 개수가 관련되어서는 안됩니다. 더 자세히 설명 할 수 있습니까? – munch

+0

바인드/바인드 해제 아이디어는 다음과 같습니다. 하지만 위의 솔루션을 작동하지 않습니다. – Steven

0

요소를 다시 바인딩하지 말았습니까? 나는 이것이 당신이 초기에 createguide 버튼을 바인딩하고 바인딩 된 채로 남겨두고 단순히 사용자 이름 입력마다 활성화/비활성화를 전환 할 수 있다고 생각하고 있습니다.

$('#guide_btnCreateGuide').click(function() { 
    // Do something 
}); 

$('#userName').keydown(function() { 
    var username = $(this).val(); 
    if (username.length > 5) { 
     $('guide_btnCreateGuide').attr('disabled', '') 
    } else { 
     $('guide_btnCreateGuide').attr('disabled', 'disabled') 
    }  
}); 
+0

바인딩 문제가 해결 될 것 같아요 (?). 내 문제는 지금 문자를 세고있다. 그것은 아무런 문제가 카운트 업, 그것을 카운트 다운 중입니다. 문제. – Steven