2013-03-08 3 views
1

문자 수가 특정 값에 도달하면 사용자가 더 이상 입력을 텍스트 영역에 입력하지 못하게해야합니다.jQuery preventDefault가 IE 버전에서 작동하지 않습니다.

내 코드는 Chrome, Safarai 및 Firefox에서 잘 작동합니다.

그러나 에서 preventDefault 방법은 IE의 모든 버전에서 나를 위해 작동하지 않습니다.

그래서 이것에 대해 많은 유사한 주제를 발견하는 가장 일반적인 제안을 포함했다 :

  • 로 preventDefault가 존재 확인하기 위해 검사를 수행합니다. 존재하지 않는 경우 IE 사용 returnValue = false. 문제는 returnValue = false도 작동하지 않습니다.

의견이 있으십니까? 의 keyup와 Fiddle

데모 :

// Attach textarea char counter to all textarea's with class of 'textarea-char-count' 
$('.textarea-char-count').live("keyup", function(event) { 
    MYAPP.COMMON.textareaCounter(this, event); 
}); 

// Attach textarea char counter to element 
MYAPP.COMMON.textareaCounter = function(element, evt) { 

    //Get char limit 
    var limit = $(element).attr("maxlength"); 

    // get current character count 
    var current = $(element).val().length; 

    // if current character count is greater than or equal to the character limit 
    if(current >= limit) { 
     // prevent further characters from being entered apart from the 
     // Delete and Backspace keys 
     if(evt.which != 0 && evt.which != 8) 
     { 
      if (evt.preventDefault) { 
       evt.preventDefault(); 
      } 
      else { 
       evt.returnValue = false; 
      } 
     } 
    } 

    // add the remaining character count to our span 
    $(element).parent().next().show().text(current + "/" + limit); 
} 
+0

IE의 버전의 jQuery 버전을 사용한다 –

+0

stopPropagation() jquery lib 파일을 업데이 트를 사용하여보십시오 ... – SaurabhLP

+0

@ s.lenders - 나를 위해 IE의 모든 버전과 jQuery1.7.2 –

답변

2

변경 keydownkeyup에서 이벤트, 그것은

데모 작동를 keyDown

Fiddle가 키 누르기 이벤트가 작동하지 않습니다 since IE and Chrome does not fire it on backspace and delete

참고 : 카운터는 여전히 이상하게 작동합니다.

감가 상각 및 keypress

$('body').delegate(".textarea-char-count","keypress", function(event) { 
     MYAPP.COMMON.textareaCounter(this, event); 
    }); 
+0

keydown이 작동하는 이유는 무엇입니까? Keydown은 당신이 제안한 것처럼 아주 이상하게 행동합니다. 현재 일종의 알맞은 사용자 경험을 가진 keydown 솔루션과 함께 작업 중입니다! –

+0

나는'keyup'이 처리 될 때까지 이미 눌려진 키가 입력 값에 추가 되었기 때문에 되돌릴 수 없다고 생각합니다. –

1

live

를 더 이상 사용되지 않습니다 live 때문에 onlive에서, 전 이동을 할 수있는 좀 더 변화가 있습니까? 그것은 IE 8 및 9에서 나를 위해 작동
관련 문제