it-roy-ru.com

Ограничить количество строк в текстовой области и отображать количество строк с помощью jQuery

Используя jQuery я хотел бы:

  • Ограничить количество строк, которые пользователь может ввести в текстовой области, до установленного числа
  • Отображать счетчик строк, который обновляет количество строк по мере ввода строк
  • Ключ возврата или/n считается строкой

Слава всем, кто может помочь!

$(document).ready(function(){
  $('#countMe').keydown(function(event) {
    // If number of lines is > X (specified by me) return false
    // Count number of lines/update as user enters them turn red if over limit.

  });   
});


<form class="lineCount">
  <textarea id="countMe" cols="30" rows="5"></textarea><br>
  <input type="submit" value="Test Me">
</form>

<div class="theCount">Lines used = X (updates as lines entered)<div>

Для этого примера допустим ограничение количества строк до 10.

Спасибо всем!

22
chainwork

hTML:

<textarea id="countMe" cols="30" rows="5"></textarea>
<div class="theCount">Lines used: <span id="linesUsed">0</span><div>

яШ:

$(document).ready(function(){

    var lines = 10;
    var linesUsed = $('#linesUsed');

    $('#countMe').keydown(function(e) {

        newLines = $(this).val().split("\n").length;
        linesUsed.text(newLines);

        if(e.keyCode == 13 && newLines >= lines) {
            linesUsed.css('color', 'red');
            return false;
        }
        else {
            linesUsed.css('color', '');
        }
    });
});

скрипка: http://jsfiddle.net/XNCkH/17/

38
Samuel Liew

Очень уродливый, но каким-то образом работающий пример Укажите строки textarea

<textarea rows="3"></textarea>

а затем в JS

   $("textarea").on('keydown keypress keyup',function(e){
       if(e.keyCode == 8 || e.keyCode == 46){
           return true;
       }
       var maxRowCount = $(this).attr("rows") || 2;
        var lineCount = $(this).val().split('\n').length;
        if(e.keyCode == 13){
            if(lineCount == maxRowCount){
                return false;
            }
        }
        var jsElement = $(this)[0];
        if(jsElement.clientHeight < jsElement.scrollHeight){
            var text = $(this).val();
            text= text.slice(0, -1);
            $(this).val(text);
            return false;
        }

    });
0
Alexandr Sargsyan