2013-04-10 59 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

嘗試編寫幹,使您的問題更加明顯。 – Andries 2013-04-10 16:52:40

+0

不好意思,幹嗎? – John 2013-04-10 16:57:49

+1

'utf8 type'是什麼?你能給個例子嗎? – 2013-04-10 17:02:29

回答

1

使用String.charCodeAt得到的任何數值或字符串中的所有字符。如果值大於127,那麼你正在處理unicode值。

既然你是回調keyUp,你可以做到這一次一個:

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

(您也可以直接通過字符串長度循環,但這是多餘的,因爲你表現一個按鍵在一個時間。)

+0

我會盡力,儘管實施它對我來說並不容易。謝謝 – John 2013-04-10 17:41:54

+0

我完全搞砸了。我應用了你的建議,但不工作。我認爲有一些語法問題,而不是邏輯問題。 [檢查這裏](http://jsfiddle.net/xqyWV/) – John 2013-04-10 18:05:34

+0

你是指在我的問題或[這一個](http://jsfiddle.net/kTukB/)的小提琴? – John 2013-04-10 18:11:02