MegaMufa
@MegaMufa

JQuery: как считать символ переноса строки за несколько символов?

Есть текстовое поле, у которого назначена максимальная длинна. Нужно сделать так, что бы символ переноса строки считался за несколько символов (например 100).

Ну и понятно, что надо при этом само свойство maxlength менять, что бы пользователь не мог ввести больше, чем положено.
Я вот все тыкаюсь, никак ничего придумать не могу. Подскажите, как это можно реализовать?
  • Вопрос задан
  • 3954 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Как то так
<form>
    <textarea id='test' maxlength='200'></textarea><br>
    <span id='rest'></span>
</form>


$('#test').on('keydown', function(event) {
        var MAXLEN = 200;
        var str = $(this).val();
        var newLines = str.split('\n').length-1;
        var len = str.length+newLines*99;
        if (event.which == 13) {
            if (len > MAXLEN-100)
                return false;
            else 
                newLines++;
        }
        $(this).attr('maxlength', MAXLEN-newLines*99);
        return true;
    });

    $('#test').on('paste', function(event) {
        var MAXLEN = 200;
        var str = $(this).val()+event.originalEvent.clipboardData.getData('Text');
        var newLines = str.split('\n').length-1;
        var len = str.length+newLines*99;
        if (len > MAXLEN)
            return false;
        return true;
    });

    $('#test').on('keyup', function() {
        $('#rest').text($(this).val().length+'/'+$(this).attr('maxlength'));
    });
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
var ta = $('textarea');
var MAXLENGTH = ta.attr('maxlength');

ta.on('keyup', function () {
    ta.attr('maxlength',  MAXLENGTH - ((ta.val().split('\n') - 1) * 100));
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы