** アップデート **
text()の代わりにval()を使用するという追加の変更を加えて、RicardoLohmannの提案のコードを変更しました。
それはまだ正しくありませんが、はるかに一貫性があります。最初は1文字ずつずれていて、テキスト領域でEnterキーを押すたびに1文字ずつずれていきます。テキスト領域が戻ってくるかどうかはまだわかりませんが、CRLFではありません。
それが主な問題だと思います。SMSプロセッサに渡されるキャリッジリターンとラインフィードについていくつかのテストを行い、事後に変換できることを期待しています。
textarea値を解析し、「Enterキー」を押すたびにカウントに1文字を追加すると、目的の値が取得されます。
textareaで完全なCRLFを使用する方法について誰かがアイデアを持っているなら、私はすべての耳です。
マネージャーがSMSメッセージを作成できるようにしているので、使用中の文字数を表示する必要があります。これまでのところ、開始時に文字数が1つずれており、時間の経過とともに非常に不正確になります。
<textarea id="message_content"></textarea>
<div id="message_length"></div>
メッセージの内容は、最初はJavascriptで設定されています。
uri_decoded = 'Test Message\r\nTest Message';
select-allですべてのテキストを選択し、Notepad ++などのテキストエディタにスローすると、26文字が表示されます。これは正しいです。文字用に22、空白用に2、CRLF用に2。
次のコードは、最初は25文字を示していますが、正確に表現できていません。
// Dynamically update the SMS length when keys are pressed
$("#message_content").keypress(function(e){
var string_length = $("#message_content").text().length + 1;
var message_count = string_length / 160;
message_count = Math.ceil(message_count);
var html = '';
html = html + message_count + ' message(s) - ' + string_length + ' characters';
$("#message_length").html(html);
});
// Dynamically update the SMS length when the textarea blurs
$("#message_content").blur(function(){
var string_length = $("#message_content").text().length;
var message_count = string_length / 160;
message_count = Math.ceil(message_count);
var html = '';
html = html + message_count + ' message(s) - ' + string_length + ' characters';
$("#message_length").html(html);
});
// Perform an initial update on the character count
$("#message_content").blur();
キープレス機能では、AFAICTが新しい文字が追加されたコンテンツにアクセスできないため、長さに1を追加しました。いずれにせよ、イベントは最初は発生しません。私は主にブラーイベントを評価しています。
textareaを選択したのは、データベースから渡され、最終的にSMSプロセッサに渡されるCRLFを正確に表すためです。
正確な値を取得するには、助けや観察があれば幸いです。