1

** アップデート **

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を正確に表すためです。

正確な値を取得するには、助けや観察があれば幸いです。

4

1 に答える 1

0

次の問題を修正します。テキストデモ
var string_length = $("#message_content").text().length + 1;
がない場合は1を返します。

keyup代わりに使用してください。

両方のイベントで同じカムを使用できます。

$("#message_content").on('blur keyup', 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);
});
于 2012-07-27T03:20:11.947 に答える