2017-03-10 13 views
1

私は英語と中国語の両方でSMSメッセージを入力するテキストフィールドを持っています。私が検索したように、1つのSMSは1120ビットしか持てません。それぞれの英語文字は7ビットなので、1120/7 = 160文字、中国語の各文字は16ビットなので、1120/16 = 70文字になります。私はjqueryを使って、書かれた単語とテキストフィールドの下に残っている単語を表示する必要があります。どうすればいい?jquery 7ビットと16ビットのSMS文字の計算

+0

ので、1つのメッセージには中国語や英語、右のいずれかのテキストが含まれていますか? –

+0

@paraS elixiRはい、いずれかの言語の入力を許可します。 – Mikethetechy

答えて

1

$maxValの値を変更することができます。だから、単一のバイトは、特定のrange.Sameの事で、次の私はjsファイルを作成している

function getByteLength(normal_val) { 
    // Force string type 
    normal_val = String(normal_val); 

    var byteLen = 0; 
    for (var i = 0; i < normal_val.length; i++) { 
     var c = normal_val.charCodeAt(i); 
     byteLen += c < (1 << 7) ? 1 : 
        c < (1 << 11) ? 2 : 
        c < (1 << 16) ? 3 : 
        c < (1 << 21) ? 4 : 
        c < (1 << 26) ? 5 : 
        c < (1 << 31) ? 6 : Number.NaN; 
    } 
    return parseInt(byteLen)*8; 
} 

メモリに基づいて、文字列のサイズを計算します次の関数を作成しました。この上の他のcharacters.Basedについても同様ですあなたのために働くバイブル。 http://jsfiddle.net/paraselixir/d83oaa3v/6/

+0

thx paraS elixiR私はそれを通過します。 – Mikethetechy

+0

なぜ1文字1ビットを数えているのですか?英語のキャラクターが8ビットではないと思われますか? – Mikethetechy

+0

ああ申し訳ありませんが、私は8で戻り値を掛けたので、バイトでメモリを数えています。 jsfiddleも更新しました。 –

1

以下のスニペットをご覧ください。これは、合計文字数とメッセージの総数をカウントします。

あなたは文字がそうでシングルバイト、ダブルバイト、トリプルバイトとすることができ70分の160

$(document).ready(function() { 
 

 
var $remaining = $('#charNum'), 
 
    $messages = $remaining.prev(); 
 
    $maxVal = 160; 
 

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

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

 

 

 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<textarea name="" id="SMSMessage" cols="30" rows="2" class="form-ctrl word-counter foo-value"></textarea> 
 
<span class="error-message word-counter">0 message(s)/</span><span id="charNum" class="error-message">160 characters remaining</span>

+0

thx ajeが返信しますが、私も中国語の文字を検出する必要があります – Mikethetechy

関連する問題