В настоящее время я сталкиваюсь со следующей проблемой.У меня есть textarea
, и я хочу не только ограничить размер textarea
атрибутами по умолчанию rows
и cols
, но я также хочу запретить пользователю вводить больше символов, чем определено в этих атрибутах.У меня есть несколько работающее решение, но я не слишком доволен им.Может быть, у вас есть несколько советов, как улучшить решение
HTML
<textarea rows="2" cols="10" (keyup)="limitTextArea($event)"></textarea>
JS
limitTextArea(evt: KeyboardEvent) {
let textarea = evt.target as any
let maxRows: number = textarea.rows;
let maxColumns: number = textarea.cols;
let newContent: string = (textarea.value as string)
.split('\n')
.filter((val, row) => row < maxRows)
.map(val => val.slice(0, maxColumns))
.join('\n');
textarea.value = newContent;
}
Теперь естьЕсть несколько проблем с этим решением.
- Оно вызывается
keyup
-Event.Таким образом, пользователь всегда будет видеть набранный им символ, прежде чем он снова исчезнет. - Я как-то возился с целым двухсторонним принципом привязки данных, установив
textarea.value
- , который я использую
any
как Тип для textarea
, который мне действительно не нравится.Если я использую TypeScript, я хочу использовать Types.
Есть идеи, как решить эту проблему?