imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 28.07.2004, 10:38     # 1
Drualex
Guest
 
Сообщения: n/a

Как ограничить максимальное кол-во знаков вводимых в textarea?

Джентельмены, может кто-нить знает как ограничить ввод знаков в textarea. А то мне нельзя б базу заносить больше 255 знаков. А проверять на серваке - это будет слишком напрягать, если сам не знаешь сколько знаков уже ввел
С уважением.
 
Старый 28.07.2004, 11:14     # 2
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
на onsubmit формы сделай обработчик. в нем и проверяй.
что-то такое будет: return (!textarea_id.value.length > 10)

Код:
<script language="javascript">
function checkTextAreaLength(form) {
  if (form.textarea_id.value.length > 10) {
    alert("Слишком много ввели!");
    return false;
  }
  return true;
}
</script>
<form onsubmit="checkTextAreaLength(this)">
...
<textarea id=textarea_id></textarea>
...
</form>
упс
onsubmit = "return(checkTextAreaLength(this))"
__________________
Nunc est bibendum
is_absent вне форума  
Старый 28.07.2004, 12:23     # 3
CEO
Full Member
 
Аватар для CEO
 
Регистрация: 31.08.2003
Адрес: где-то между Марсом и Юпитером
Сообщения: 998

CEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собой
Или можно так:
<html>
<textarea onkeydown="javascript:count();" id="test" rows=8 cols=25></textarea>
<script>
function count()
{
var str1="";
str1=document.all.test.value;
if (str1.length == 255) alert("Превышенно допустимое число символов")
}
</script>
</html>
__________________
Старые игры раздают здесь
CEO вне форума  
Старый 28.07.2004, 12:39     # 4
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
CEO
можно, но больше 255 символов все равно набрать можно будет и отправить... прямо из формы....
__________________
Nunc est bibendum
is_absent вне форума  
Старый 28.07.2004, 20:10     # 5
aceofext
Member
 
Регистрация: 27.08.2002
Адрес: Канада
Пол: Male
Сообщения: 343

aceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуру
Вот как надо:

Код:
<textarea onkeydown="return (this.value.length < 255);"></textarea>
aceofext вне форума  
Старый 28.07.2004, 20:59     # 6
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
elishnevsky
красиво но иногда недостаточно.
ctrl+v -ctrl+с (из меню) пройдет
__________________
Nunc est bibendum
is_absent вне форума  
Старый 28.07.2004, 21:22     # 7
aceofext
Member
 
Регистрация: 27.08.2002
Адрес: Канада
Пол: Male
Сообщения: 343

aceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуру
Что-то я лохонулся Ответил не проверив. onkeydown фигово работает. Если уже набрал 255 символов, то больше ничего сделать нельзя, даже стереть Заменить на onkeypress.
А с copy+paste проблемка. Чтоб всё работало идеально, надо не простой скриптик писать.
aceofext вне форума  
Старый 28.07.2004, 21:52     # 8
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
elishnevsky
на мой взгляд проверка должна быть двойной... на странице (для 99% пользователей), одним из предложеных вариантов и на сайте (понадобится в 1% случаев, даже меньше, для всяких крутых хакеров )
иначе любой яваскрипт можно обойти..
__________________
Nunc est bibendum
is_absent вне форума  
Старый 28.07.2004, 22:20     # 9
CEO
Full Member
 
Аватар для CEO
 
Регистрация: 31.08.2003
Адрес: где-то между Марсом и Юпитером
Сообщения: 998

CEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собой
Вот готовая форма со скриптом -- отображает сколько еще символов можно набрать, выдает сообщение если символов слишком много, режит до заданного размера если сообщение получается больше 255 символов.
Код:
<html>
<body bgcolor="#cccccc" text="#666666" 
link="#666666" vlink="#666666" alink="#666666">
<script language="JavaScript">
function ChooseLen()
{
M = window.document.send.text.value.length;
if(M>255){
window.alert("Вы набрали слишком длинное сообщение");     
window.document.send.text.value= window.document.send.text.value.substring(0,255);
M = window.document.send.text.value.length;
    }
    window.document.send.count.value = 255-M;
}
</script>
<form enctype="multipart/form-data" action="send.php" method="POST" 
name="send">
<table border="0" align="center">
<tbody><td>                             
<div align="center">
<font face="Arial, Helvetica, sans-serif">
<br><b>
<font size="-1">Текст сообщения</font></b></font><br>              
<textarea rows="8" cols="30" wrap="SOFT" NAME="text" 
onfocus="ChooseLen()" onchange="ChooseLen()" onkeyup="ChooseLen()" 
onkeydown="ChooseLen()" onkeypress="ChooseLen()"></textarea>
</div> </td><tr><th>                             
<div align="center"> <font face="Arial, Helvetica, sans-serif">
<font size="-1">Вы можете набрать еще 
<input size="4" value="255" name="count" type="text" 
onfocus="window.document.send.text.focus();"> символов
</font></font> </div>
</th></tr><tr><th> <br>
<input type="submit" name="Start" value="Отправить сообщение"></form>
<br> </th> </tr>
</tbody></table>
</body>
</html>
__________________
Старые игры раздают здесь

Последний раз редактировалось CEO; 29.07.2004 в 13:57.
CEO вне форума  
Старый 29.07.2004, 06:19     # 10
aceofext
Member
 
Регистрация: 27.08.2002
Адрес: Канада
Пол: Male
Сообщения: 343

aceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуру
Уф. Есть решение. Правда наверное только для IE. Поддерживает Copy/Paste.

Создаётся след. HTC (HTML Component) файл:
maxlength.htc
Код:
<PUBLIC:COMPONENT id="bhvMaxlength" urn="maf:Maxlength">
	<PUBLIC:PROPERTY name="maxLength" />
	<PUBLIC:ATTACH event="onkeypress" handler="doKeypress" />
	<PUBLIC:ATTACH event="onbeforepaste" handler="doBeforePaste" />
	<PUBLIC:ATTACH event="onpaste" handler="doPaste" />

	<SCRIPT language="JScript">
	// Keep user from entering more than maxLength characters
	function doKeypress(){
	     if(maxLength && value.length > maxLength-1){
	          event.returnValue = false;
	          maxLength = parseInt(maxLength);
	     }
	}
	// Cancel default behavior
	function doBeforePaste(){
	     if(maxLength)
	          event.returnValue = false;
	}
	// Cancel default behavior and create a new paste routine
	function doPaste(){
	     if(maxLength){
	          event.returnValue = false;
	          maxLength = parseInt(maxLength);
	          var oTR = element.document.selection.createRange();
	          var iInsertLength = maxLength - value.length + oTR.text.length;
	          var sData = window.clipboardData.getData("Text").substr(0,iInsertLength);
	          oTR.text = sData;
	     }
	}
	</SCRIPT>
</PUBLIC:COMPONENT>
Затем в HTML файле пишется следущая весчь:
Код:
<textarea maxlength="255" style="behavior: url(maxlength.htc)"></textarea>
Понятно, что можно сделать тоже самое и без HTC файла. Но с ним красиво

Последний раз редактировалось aceofext; 29.07.2004 в 06:22.
aceofext вне форума  
Старый 29.07.2004, 06:23     # 11
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
Цитата:
window.document.send.text.value=window.document.se nd.text.value.substring(0,255);
без пробела надо бы... все остальное работеат
__________________
Nunc est bibendum
is_absent вне форума  
Старый 29.07.2004, 08:19     # 12
CEO
Full Member
 
Аватар для CEO
 
Регистрация: 31.08.2003
Адрес: где-то между Марсом и Юпитером
Сообщения: 998

CEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собой
elishnevsky:Класс! Тот код, что я предложил тоже поддерживает Copy/Paste, но твой вариант куда как интереснее . В IE5 все прекрасно работает, но в Mozilla 1.6 такой скрипт не пашет к сожалению.
__________________
Старые игры раздают здесь
CEO вне форума  
Старый 29.07.2004, 08:25     # 13
aceofext
Member
 
Регистрация: 27.08.2002
Адрес: Канада
Пол: Male
Сообщения: 343

aceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуру
Да, behaviors - хорошая вещь.
aceofext вне форума  
Старый 13.10.2009, 14:58     # 14
drGluck
Guest
 
Сообщения: n/a

Цитата:
Сообщение от Drualex Посмотреть сообщение
Джентельмены, может кто-нить знает как ограничить ввод знаков в textarea. А то мне нельзя б базу заносить больше 255 знаков. А проверять на серваке - это будет слишком напрягать, если сам не знаешь сколько знаков уже ввел
С уважением.
да вы чо блин ребята!! Смешно просто!!))))
вот как НАДО!
кушайте на здоровье ;-)

Код:
<textarea onkeypress="if(this.value.length>255){this.value=this.value.substr(0,255)};"></textarea>
и ничего не стопорится! а от предыдущих кодов я не в восторге! то тупо встанет и ничего не двигается при достижении предела, то просто банально объёмный код.. а этот прост как мои тапочки )))

добавлено через 2 минуты
блин ФИГАСЕ! только щяс увидел дату!!)))))))) мягко говоря ужосНах!)) это ж пять лет то прошло!)))))))) а я тут за минуту слепил)) но всёравно кому пригодится может! а то пишут тонны скриптов.. а толку?!
 
Старый 13.10.2009, 19:12     # 15
aceofext
Member
 
Регистрация: 27.08.2002
Адрес: Канада
Пол: Male
Сообщения: 343

aceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуруaceofext Гуру
Бугага )))) Поднял такой древний топик ))
Да, многое с тех пор изменилось. А behaviors - полное говно!
aceofext вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 02:33.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.