|
|
|
| 5 лет работаю с HTML, но только сейчас с ужасом заметил отсутствие у поля <textarea> параметра maxlength ! Сделал функцию, обрезающую innerHTML текстового поля, если его length больше допустимого, посадил её в событие onkeypress. Но тут же понял, что это не выход, т.к. даже при вставке текста функция проколется. Так как же лучше это сделать ?! Желательна работоспособность во всех браузерах :) | |
|
|
|
|
|
|
|
для: DDK
(25.01.2006 в 15:53)
| | Можно проверить с помощью PHP...
<form action="check.php" method="post">
<textarea name="text">
<input type="submit value="Отправить!">
</form>
|
Check.php:
<?php
if (strlen($_POST['text']) > 100)
{
echo "Не больше ста символов!!";
}
?>
<!-- сожержимое страницы -->
|
P.S. Можно и с помощью JavaScript, но я в нем не силен...А так лучше и то, и то применять - чтоб лишний раз не отправлял некорректные данные и чтоб не обходил ограничение... | |
|
|
|
|
|
|
|
для: Unkind™
(25.01.2006 в 16:44)
| | На PHP-то это без проблем ;-) Интересно, как на JS... | |
|
|
|
|
|
|
|
для: DDK
(25.01.2006 в 15:53)
| | Повесить её также на onchange | |
|
|
|
|
|
|
|
для: DDK
(25.01.2006 в 15:53)
| | Нет, надо на onkeyup
Посмотрите здесь на форуме есть 2 темы, одна с запретом введения любых символов вместо цифр в поле, другая о том, сколько символов осталось воткнуть в textarea(контролируемая длина строки).
Впрочем вот:
http://softtime.ru/forum/read.php?id_forum=4&id_theme=11062&page=1
http://softtime.ru/forum/read.php?id_forum=4&id_theme=12042&page=1 | |
|
|
|
|
|
|
|
для: codexomega
(25.01.2006 в 18:38)
| | Спасибо, посадить на onkeyup - действительно самое оптимальное решение ! ну, а кульхацкеров уже PHP-обработчик, если что, подрежет в нужном месте ;-) | |
|
|
|
|
|
|
|
для: DDK
(25.01.2006 в 18:55)
| | На onkeyup и onchange надо повесить одну и ту же функцию. Тогда сработает и по Paste. | |
|
|
|
|
|
|
|
для: 12345
(25.01.2006 в 20:00)
| | по вставке и с одним кейап работает :) | |
|
|
|
|
|
|
|
для: DDK
(25.01.2006 в 20:55)
| | > по вставке и с одним кейап работает :)
А при Paste мышью?
> и срабатывают эти события исключительно в осле (IE)
Да быть того не может - пример
<textarea rows=12 onkeyup=alert('up') onchange=alert('change')></textarea>
работает где надо и не надо (FF, IE)
И зацикливать опрос соответственно не надо. | |
|
|
|
|
|
|
|
для: DDK
(25.01.2006 в 18:55)
| | UPD.: Мде... и срабатывают эти события исключительно в осле (IE) :( Ладно, придётся прибегнуть к крайним мерам - зациклить функцию на setTimeout с долисекундным промежутком... | |
|
|
|
|
|
|
|
для: DDK
(25.01.2006 в 15:53)
| | А почему не на onBlur? textarea ведь enter'ом не сабмитится (как text, например), т.е. в любом случае фокус с нее надо убрать. | |
|
|
|
|
|
|
|
для: Киналь
(25.01.2006 в 21:17)
| | И onblur в опере и мозилле не работает... | |
|
|
|
|
|
|
|
для: DDK
(25.01.2006 в 15:53)
| | В догонку: Вот нашёл интересное решение на DHTML:
<script language='JavaScript'>
function ismaxlength(obj){
var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : ""
if (obj.getAttribute && obj.value.length>mlength)
obj.value=obj.value.substring(0,mlength)
}
</script>
<textarea maxlength="10" onkeyup="return ismaxlength(this);"></textarea>
|
У textarea нет параметра maxlength ? - так почему бы нам его не добавить ?! :) И самое главное - работает во всех браузерах. | |
|
|
|