2013-04-10 2 views
0

은 이미 작성한 및 작동이 잘되는 것입니다 :문자 입력 감지 다음

var $remaining = $('#remaining'), 
$messages = $remaining.next(); 

$('#message').keyup(function(){ 
var chars = this.value.length, 
    messages = Math.ceil(chars/160), 
    remaining = messages * 160 - (chars % (messages * 160) || messages * 160); 

$remaining.text(remaining + ' characters remaining'); 
$messages.text(messages + ' message(s)'); 

}); This is the above code in action

그리고 지금 난 할 노력하고있어입니다 :

var text_max_En = 100; 
var text_max_utf8 = 200; 
if /* what user has typed is English */ 
{ 
    Do this 
} 
else if /* what user has typed is in utf8 type*/ 
{ 
    Do that 
} 

한마디로 :

**If** 사용자는이 메시지

당 100 자까지 계산해야 영어가 입력 한

AND **if** urf8 유형의 경우 최대 200 개까지 계산해야합니다.

모든 솔루션?

+0

DRY 코드를 작성하면 문제가 더 잘 보입니다. – Andries

+0

실례합니다, 드라이? – John

+1

'utf8 type'이란 무엇입니까? 예를 들어 줄 수 있습니까? –

답변

1

String.charCodeAt을 사용하면 문자열에있는 모든 문자의 숫자 값을 가져올 수 있습니다. 값이> 127이면 유니 코드 값을 처리합니다.

당신이 콜백 keyUp 인 것 때문에, 당신은 한 번에 이것을 수행 할 수 있습니다

var str = $('#textarea').val(); 
var ascii = str.charCodeAt(str.length - 1) < 128; 

을 (당신은 또한 단지 문자열 길이를 통해 루프,하지만 당신은 하나의 키 입력을 연기하고 있기 때문에 즉, 중복입니다 한 번에.

+0

시도해 보겠지 만 구현하기는 쉽지 않을 것입니다. 고마워. – John

+0

나는 완전히 망쳤다. 나는 당신의 제안을 적용했지만 일하지 않았습니다.논리적 인 문제가 아니라 문법적인 문제가 있다고 가정합니다. [여기에서 확인하십시오] (http://jsfiddle.net/xqyWV/) – John

+0

내 질문 또는 [This one] (http://jsfiddle.net/kTukB/)에서 바이올린을 의미합니까? – John