** 更新 **
修改了 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 处理器。
在获得准确值时,我们将不胜感激任何帮助或观察。