将计数器添加到HTML表单并计算积分

时间:2010-07-13 12:33:07

标签: javascript jquery html character counter

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

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

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

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

0个字符,1个短信息 200个字符,2条短信息

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

非常感谢, 史蒂夫

1 个答案:

答案 0 :(得分: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个字符关闭的缺陷,并添加了剩余的计数器以获得乐趣。