Число символов текстовой области jQuery (включая возврат каретки)
У меня есть функция jQuery, в которой я считаю количество символов, оставшихся на клавиатуре.
function charactersLeft(e) {
var textArea = e.data.textArea,
charLeft = e.data.maxLength - textArea.val().length,
message = e.data.messageContainer;
if (charLeft < e.data.warningLength) {
message.addClass('red').removeClass('green');
}
else {
message.addClass('green').removeClass('red');
}
message.text(charLeft);
}
Этот работает нормально, но он считает возврат каретки одним символом вместо двух. Это вызывает проблему при передаче на сервер, поскольку возврат каретки передается как '\r\n'.
Что я могу сделать, чтобы изменить мой код так, чтобы при каждом нажатии клавиши ввода число символов вычитало 2 вместо 1 и добавляло 2 вместо 1 при удалении возврата каретки?
Спасибо:)
2 ответа
Решение
Условие if на keyup?
Положить что-то вроде if(e.which==13){charLeft--}
, Это вычтет один дополнительный счет.
Ниже приведен код, который вы ищете.
код ниже также проверен.
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
(function($)
{
$.fn.extend(
{
limit: function(limit,element)
{
var interval, f;
var self = $(this);
$(this).focus(function()
{
interval = window.setInterval(substring,100);
});
$(this).blur(function()
{
clearInterval(interval);
substring();
});
substringFunction = "function substring(){ var val = $(self).val();var length = val.length;if(length > limit){$(self).val($(self).val().substring(0,limit));}";
if(typeof element != 'undefined')
substringFunction += "if($(element).html() != limit-length){$(element).html((limit-length<=0)?'0':limit-length);}"
substringFunction += "}";
eval(substringFunction);
substring();
}
});
})(jQuery);
</script>
<textarea id="myTextarea"></textarea>
<script type="text/javascript">
$(document).ready(function()
{
$('#myTextarea').limit('140','#charsLeft');
});
</script>
<div id="charsLeft"></div>