Ограничить количество строк в textarea

Тема в разделе "JavaScript", создана пользователем Davahkiin, 7 ноя 2014.

Модераторы: ZiX
  1. Davahkiin

    Davahkiin Постоялец

    Регистр.:
    20 мар 2014
    Сообщения:
    86
    Симпатии:
    3
    Может кто подскажет как ограничить количество строк в textarea? или есть готовый пример
     
  2. antiterror

    antiterror xProgramming

    Регистр.:
    22 авг 2007
    Сообщения:
    344
    Симпатии:
    135
    Попробуйте следующий раз поискать в поисковике решение. Надеюсь поможет вот это решение

    Вставить в шаблон
    HTML:
    Описание: <textarea name="textarea" id="textarea" onclick="length_check(256, 'textarea', 'counter')" onkeyup="length_check(256, 'textarea', 'counter')" ></textarea>
    Осталось символов: <span id="counter">256 / 256</span>
    
    <script language="JavaScript" type="text/javascript">
    function length_check(len_max, field_id, counter_id) {
        var len_current = document.getElementById(field_id).value.length;
        var rest = len_max - len_current;
        if (len_current > len_max )
        {    document.getElementById(field_id).value =
            document.getElementById(field_id).value.substr (0, len_max);
            if (rest < 0) { rest = 0;}
            document.getElementById(counter_id).firstChild.data = rest + ' / ' + len_max;
            alert('Максимальная длина содержимого поля: ' + len_max + ' символа(-ов)');    }
        else
        {    document.getElementById(counter_id).firstChild.data = rest + ' / ' + len_max;    }
    }
    </script>
    
    Источник
    http://exclusiveblog.ru/markup/textarea_max_length
    Здесь ещё есть: http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=58607
     
    Davahkiin нравится это.
  3. Davahkiin

    Davahkiin Постоялец

    Регистр.:
    20 мар 2014
    Сообщения:
    86
    Симпатии:
    3
    немного по другому сделал, мне нужно ограничение не по количеству символов, а по количеству строк
    Код:
        $( document ).ready(function() {
          $('textarea.limited').bind('input propertychange', function() {
                    function limitTextareaLine(e) {
                        if(e.keyCode == 13 && $(this).val().split("\n").length >= $(this).attr('rows')) {
                            return false;
                        }
                    }
                    $(function() {
                      $('textarea.limited').keydown(limitTextareaLine);
                    });
            });
            });
     
  4. Venegrad

    Venegrad Создатель

    Регистр.:
    16 янв 2014
    Сообщения:
    10
    Симпатии:
    1
    Почему вы просто не воспользуетесь html свойством maxlength="xxx"?? Ведь пользователь, которому нужно ввести больше, просто отключит javascript.
     
  5. zaxap83

    zaxap83 Постоялец

    Регистр.:
    6 дек 2010
    Сообщения:
    87
    Симпатии:
    28
    Желательно действительно дополнительно использовать maxlength="xxx" (примерно сумма количества символов в каждой строке) и сделать проверку на количество символов (строк тоже можно реализовать, но геморно) при обработке данных формы. Когда что-то запрещают, то у некоторых чешутся руки это ограничение обойти, а так это уже не получится.
    И еще, если делаете какие-то ограничения в форме через js, то и сабмит формы лучше делать через js и выводить предупреждение, если он отключен.
     
    Последнее редактирование: 6 дек 2014
  6. Lin

    Lin Создатель

    Регистр.:
    8 дек 2015
    Сообщения:
    39
    Симпатии:
    2
    textarea же прямо на странице вроде мышью можно раздвигать как попало, как тут количество строк ограничить? Наверное только по количеству символов
     
  7. mad_boy

    mad_boy Писатель

    Регистр.:
    24 дек 2012
    Сообщения:
    8
    Симпатии:
    3
    Если уж пользователю захочется ввести больше, то maxlength игнорируется точно так же :)
    Финальные проверки в любом случае нужны во время обработки введенного, а эти скорее защита от дурака.
     
  8. rabbitjam

    rabbitjam Писатель

    Регистр.:
    19 май 2015
    Сообщения:
    7
    Симпатии:
    0