1

我有一个简单的 HTML 表单,允许用户输入一些文本,然后通过 SMS 网关将这些文本作为 SMS/TXT 消息发送。用户将消息文本输入到文本区域:

<textarea rows="10" cols="40" id="smsbody" validate = "required:true" name="MessageBody"></textarea>

他们可以输入任意数量的文本,但是由于每条 SMS 限制为 160 个字符,我想显示一个字符计数器,显示输入的字符数,然后计算这将使用多少 SMS 信用。积分的计算公式基于输入的积分总数:如果一条消息超过 160 个字符,它将被拆分为多个消息部分。每个消息部分的长度限制为 153 个字符(标头为 7 个字节)。因此,160 个字符的消息为 1 个学分,306 个字符为 2 个学分,459 个字符为 3 个学分,以此类推。

理想情况下,我希望它以这种格式出现:

0 个字符,1 条 SMS 消息 200 个字符,2 条 SMS 消息

我已经在使用 jQuery,也很高兴使用基于 jQuery 的解决方案。

非常感谢,史蒂夫

4

1 回答 1

5

像这样的东西?

试试看:http: //jsfiddle.net/kG8U2/2

我想我理解正确,对于 1 条消息,它可以是 160 个字符,但对于多条消息,消息的数量是字符除以 153。

HTML

<textarea rows="10" cols="40" id="smsbody" validate = "required:true" name="MessageBody"></textarea>
<div id='message'>
    <span id='char'>0</span> characters,
    <span id='msgs'>0</span> SMS message(s),
    <span id='remg'>160</span> remaining
</div>​​​​

jQuery

var $chars = $('#char');
var $msgs = $('#msgs');
var $remg = $('#remg');

$('#smsbody').keyup(function(evt) {
    var len = this.value.length;
    $chars.text(len);
    if(len <= 160) {
        $msgs.text(1);
        $remg.text(160 - len);
    } else {
        var multi = Math.ceil((len/153)) ;
        $msgs.text(multi);
        $remg.text((multi * 153) - len);
    }
});​

编辑:修正了一个缺陷,它关闭了 1 个字符,并添加了一个剩余的计数器以供娱乐。

于 2010-07-13T12:44:25.850 回答