1

** 更新 **

修改了 Ricardo Lohmann 建议的代码,增加了使用 val() 而不是 text() 的修改。

它仍然不正确,但更加一致。最初,它关闭 1 个字符,并且在文本区域中每按下一个回车键,它就会逐渐关闭一个额外的字符。我还不确定文本区域是否正在返回,但它不是 CRLF。

我认为这是主要问题。我将对传递给 SMS 处理器的回车和换行进行一些测试,并希望我可以在事后进行转换。

解析 textarea 值并为每个按下的“输入键”添加 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 个空格,2 个 CRLF。

以下代码最初显示 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();

现在在按键功能上,我已将 1 添加到 AFAICT 以来的长度,该事件无法访问添加了新字符的内容。无论如何,该事件最初不会触发,我主要评估模糊事件。

我选择 textarea 是因为它准确地表示了从数据库传递的 CRLF,最终传递给 SMS 处理器。

在获得准确值时,我们将不胜感激任何帮助或观察。

4

1 回答 1

0

修复以下问题:
var string_length = $("#message_content").text().length + 1;
如果没有文字demo则返回 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 回答