|
|
|
| подскажите, пожалуйста, как ограничить вводимый текст по заданной высоте textarea? т.е. в textarea не появляется скроллинг и верхняя строчка не поднимается, а просто невозможно дальше ввести текст. | |
|
|
|
|
|
|
|
для: тщтфьу
(16.08.2007 в 18:46)
| | Может это поможет
<html>
<head>
<script language="JavaScript">
function textCounter( field, countfield, maxlimit ) {
if ( field.value.length > maxlimit )
{
field.value = field.value.substring( 0, maxlimit );
alert( 'Textarea value can only be 255 characters in length.' );
return false;
}
else
{
countfield.value = maxlimit - field.value.length;
}
}
</script>
</head>
<body>
<form name="maxlength_test" action="who_cares" method="">
<TEXTAREA
NAME="something"
ROWS="10"
COLS="50"
onkeypress="textCounter(this,this.form.counter,255);">
</TEXTAREA>
<br>
<input
type="text"
name="counter"
maxlength="3"
size="3"
value="255"
onblur="textCounter(this.form.counter,this,255);"> characters remaining
</form>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: Furst
(16.08.2007 в 19:28)
| | Furst, спасибо, но это ограничение по количеству символов, а не по высоте textarea, т.е. по количеству строк в форме. в каждой строке может быть ведь разное количество символов, а это значит, что количество строк может быть тоже разным. нужно ограничение именно по высоте формы. | |
|
|
|
|
|
|
|
для: тщтфьу
(17.08.2007 в 03:18)
| | Для MSIE решение простое:
<textarea style="width: 60%; height: 40%; overflow: hidden"
onpaste="O = this; S = O.value; setTimeout ('O.value = S', 0)"
onkeydown="O = this; S = O.value; if (O.createTextRange ().boundingHeight > O.offsetHeight - 8) setTimeout ('O.value = S', 0)"></textarea>
|
PS. Выделенное жирно число 8 - это приблизительно взятая величина "высоты одной строки в TEXTAREA" . Это значение можно, конечно, вычислить абсолютно точно (через getClientRects ().length), но я здесь просто не стал заморачиваться, дабы не затенять решение поставленной задачи.
PS1. Запрещено вообще вставлять что-нибудь из буфера, ибо определить "высоту" того, что в буфере находится (т.е. до вставки в <TEXTAREA>), не представляется возможным. А что делать в случае, если текст (после вставки из буфера) превысит высоту <TEXTAREA>, вы не указали: обрезать, или же вовсе запрещать? Потому и решил радикально - вставлять из буфера вовсе НИЗЗЯ.
PS2. Реализовать это же для Mozilla - нельзя. Или, может быть, мне просто не хватает знаний по DOM Mozilla :-) | |
|
|
|
|
|
|
|
для: CNT
(17.08.2007 в 04:21)
| | CNT, спасибо за ответ!!! из буфера вставлять тоже нужно, а то, что не влезло, должно обрезаться. | |
|
|
|
|
|
|
|
для: CNT
(17.08.2007 в 04:21)
| | уважаемый CNT, я пробую сделать для onpaste="O = this; S = O.value; if (O.createTextRange ().boundingHeight > O.offsetHeight - 8) setTimeout ('O.value = S', 0)", но при вставке текста из буфера текст не обрезается. пожалуйста, подскажите как быть со вставкой из буфера. | |
|
|
|