В настоящее время у меня возникают трудности с нажатием клавиши Enter, чтобы прекратить создавать новые строки в моем текстовом поле после достижения максимального количества строк. Количество строк передается в качестве параметра в компоненте, который я создал. Мое текстовое поле является редактором Redactor, а новые строки разделяются разрывами строк.Как ограничить количество строк в Textarea (Redactor)?
У меня есть вычислен наблюдаемый, который определяет количество строк на основе числа переносов в тексте и она возвращается правильное значение:
self.numberOfRows = ko.computed(function() {
return self.value().split(/<br>/).length;
}, this);
В моих настройках Redactor У меня есть функция keydownCallback, сравнивающую количество строк до максимального числа строк и должны предотвратить клавишу ввод от создания новой строки, когда макс достигает или превышает:
keydownCallback: function (e) {
if (e.keyCode > 48 || e.keyCode === 32) {
if (self.remainingCharacters() <= 0) {
e.preventDefault();
}
} else if (e.keyCode === 13) {
if (self.maxRows != null) {
if (self.numberOfRows() >= self.maxRows) {
e.preventDefault();
}
}
}
},
Первая часть функции обратного вызова ограничивает количество символов и рабочий p но ключ ввода все еще создает новые строки. Я также попробовал «вернуть ложь»; вместо preventDefault, и я также попробовал stopPropagation перед preventDefault, но не повезло. Меня не интересуют пользователи, вставляющие значения в текстовое поле, и я не беспокоюсь о переносе слов. Предложения?
Разделенные функции обратного вызова:
enterCallback: function(e) {
if (self.maxRows != null) {
if (self.numberOfRows() >= self.maxRows) {
return false;
}
}
},
keydownCallback: function (e) {
if (e.keyCode > 48 || e.keyCode === 32) {
if (self.remainingCharacters() <= 0) {
e.preventDefault();
}
}
},
Отдельно на отдельные функции обратного вызова, с помощью ввода перезвонить и до сих пор входит в новую строку, когда максимальная строка достигнута или превышена. Оператор if в обратном вызове ввода выполняется правильно. Я смог отобразить сообщение в консоли, когда я нажал клавишу ввода и достиг максимального количества строк. –