Добавление счетчика в форму HTML и расчет кредитов - PullRequest
1 голос
/ 13 июля 2010

У меня есть простая HTML-форма, которая позволяет пользователю вводить некоторый текст, который затем отправляется как SMS / TXT-сообщение через SMS-шлюз.Пользователь вводит текст сообщения в текстовое поле:

<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.

Большое спасибоСтив

1 Ответ

5 голосов
/ 13 июля 2010

Как то так?

Попробуйте: 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 символ, и добавлен оставшийся счетчик для забавы.

...