Ограничение ввода в Textarea

Infineon

New member
21.07.2008
2
0
#1
В разрабатываемом веб-приложении есть поля "TextField" и "TextArea".
Значение "maxlenght" для них вытаскиваются из базы кодом:
[codebox]"output.AddAttribute(HtmlTextWriterAttribute.Maxlength, this.MaxLength.ToString());"[/codebox]
в соответствующих классах TextField.cs и TextArea.cs.

При компиляции для TextArea получаю:
[codebox]<textarea id="Feedback" style="width: 756px;" onfocus="checkFocus(this);" tabindex="0" rows="5" maxlength="400" name="Feedback">[/codebox]

Но в отличии от поля TextField (у которого тоже maxlength="400"), при вводе текста в TextArea при достижении значения "maxlength" ввод не прерывается, т.е. текст можно вводить пока не надоест.

есть вариант ввернуть проверку с отбрасыванием лишних данных в поле TextArea функцией Limit:
[codebox]function Limit() {
if (this.StrValue.Length > this.MaxLength) {
this.Value=this.StrValue.Substring (0, this.MaxLength);
}
}[/codebox]

но при этом не знаю как сделать, чтобы эта функция вызывалась при каждом вводе (нажатии на клавишу) в поле TextArea?

p.s. работаю в MS Visual Studio на C#
 
S

ShadowCoder

#2
Блондин
но при этом не знаю как сделать, чтобы эта функция вызывалась при каждом вводе (нажатии на клавишу) в поле TextArea?
- А яваскриптом пробовали обрабатывать события TextArea: onkeydown, onkeyup, onkeypress?
 

Infineon

New member
21.07.2008
2
0
#3
Спасибо, так и сделал )
Правда не очень корректно работает ограничение длины: при высчитывании длины поля не учитываются спец. символы (\n и подобные). А вот при сохранении в базу данных поле обрезается уже с их учётом. Получается что пользователю текст позволили ввести, но потом конец текста обрезали.
Как бороться?