2015-05-15 3 views
0

Мне нужно иметь текстовое поле, которое позволяет пользователю вводить только 2 строки текста.Textarea позволяет пользователю вводить только 2 строки

Я выполнил это с помощью e.preventDefault() в событии keyDown, когда lineCount равно 2. Проблема в том, что пользователь использует backspace и удаляет введенный текст.

Как отслеживать линии и разрешать ввод текста еще до повторного ввода пользователем двух строк?

Вот что я был в состоянии выполнить:

var lineCount = 0; 
$('#editor').keydown(function (e) { 
    if (e.keyCode == 13) { 
     lineCount++; 
    } 
    if (e.keyCode == 8) { 
     //needs to remove characters, deduct linecount when it gets to first line and reinstate typing 
     return true; 
    } 
    if (lineCount >= 2) { 
     e.preventDefault(); 
     return false; 
    } 
}); 

http://jsfiddle.net/blueberry20/yphkafqn/2/

ответ

0

Может быть что-то вроде этого в JQuery (> 1.6):

$(document).ready(function() { 

    var lines = 2; 

    $('#mytext').keydown(function (e) { 
     newLines = $(this).val().split("\n").length; 

     if (newLines > lines) { 
      $("#mytext").prop('disabled', true); 
     } else { 
      $("#mytext").prop('disabled', false); 
     } 
    }); 

    $('#button').click(function() { 
     $("#mytext").val(''); 
     $("#mytext").prop('disabled', false); 
    }); 
}); 

http://jsfiddle.net/6vwLLu5h/1/

It не работает для паст, и если пользователь не использует разрывы строк.

+0

С точки зрения удобства использования, это ужасно. Если пользователь пытается ввести третью строку, все будет заблокировано на месте, и дальнейшее редактирование не будет выполнено. Почему бы кто-нибудь этого хотел? – riwalk

+0

@ Stargazer712 true - я дал одно возможное решение в отношении его вопроса - выкапывая больше, он может добавить к нему дополнительные функции: одна кнопка для повторного включения * textarea *? - в реальном мире кто-то может этого захотеть. :) – Hatef

Смежные вопросы