Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как ограничить число вводимих символов в textarea
 
 автор: velgandr   (06.10.2008 в 17:01)   письмо автору
 
 

Как ограничить число вводимих символов в текстовом поле формы textarea каким то количеством, то есть чтобы пользователь не смог ввести больше определенного количества символов?

  Ответить  
 
 автор: Nytrogen   (06.10.2008 в 21:19)   письмо автору
 
   для: velgandr   (06.10.2008 в 17:01)
 

JS'ом проверять длину текста при onkeyup и onchange... Как такового свойства, задающего максимальную длину вводимого текста, как maxlength у <input type=text>, у textarea нет.

<textarea cols=50 rows=20 id="myTextArea"></textarea>

<script>
  var maxlength = 100;
  var myTextArea = document.getElementById("myTextArea");
  function fixLength() {
    myTextArea.value = myTextArea.value.substr(0, maxlength);
  }
  myTextArea.onkeyup = myTextArea.onchange = fixLength;
</script>

  Ответить  
 
 автор: PAT   (07.10.2008 в 03:45)   письмо автору
 
   для: velgandr   (06.10.2008 в 17:01)
 

По уму этого делать НЕ НАДО!

Многие пишут, не глядя на монитор. Написал такой человек целую поэму, глянул на монитор - а там ровно одна десятая того, что он написал... обидится он, плюнет и уйдёт с этого сайта НАВСЕГДА.

Где-то рядом с textarea напишите, что количество символов ограничено... но проверку делайте только на сервере. Если символов больше, чем вы хотите - верните клиенту ВЕСЬ его введенный текст с просьбой сократить объём написанного.

  Ответить  
 
 автор: Nytrogen   (07.10.2008 в 16:56)   письмо автору
 
   для: PAT   (07.10.2008 в 03:45)
 

Разумно. Но может человеку требуется именно, чтобы пользователь именно не смог ввести больше, чем N символов. Ну а предупреждение о максимальной длине само собой должно быть =). Можно ещё alert сделать, когда количество символов превышено =).

  Ответить  
 
 автор: PAT   (07.10.2008 в 17:18)   письмо автору
 
   для: Nytrogen   (07.10.2008 в 16:56)
 

Да, конечно, можно "звякнуть" алертом, что, мол, кончай писать, дурик...

Но один ONKEYUP тут не поможет.
Клиент может же вставить сразу много символов из буфера (при помощи мыши).
А событие ONPASTE и ONPROPERTYCHANGE понимает только Explorer.
Да и алерт тут не самое подходящее окошко...


Если уж поставить себе задачу оповестить клиента о том, что он "оченНО многА" пишет, то надо включать setInterval по событию ONFOCUS на TEXTAREA и периодически проверять длину VALUE этого TEXTAREA. Как только произойдёт ONBLUR - setInterval выключить, проверив перед этим в последний раз.
Ну и в случае превышения лимита выдавать клиенту не алерт, а конфирм - с предупреждением, что, мол, уже N символов "лишних" написано и с вопросом-выбором "Будете писать дальше в мусорную корзину? Да/Нет" :-)

  Ответить  
 
 автор: serjinio   (09.10.2008 в 00:05)   письмо автору
 
   для: velgandr   (06.10.2008 в 17:01)
 

<textarea name="limit" cols="67" rows="2" id="description" 
onFocus="this.style.background='#e0f7bd'" 
onBlur="this.style.background='#FFFFFF'">
<?php echo $_POST['description'?></textarea>
<script type="text/javascript">
   var ns6=document.getElementById &&!document.all

   function restrictinput(maxlength, e, placeholder)
      {
      if (window.event && event.srcElement.value.length >= maxlength)
         return false;
      else if (e.target && e.target == eval(placeholder) && e.target.value.length >= maxlength)
         {
         var pressedkey = /[a-zA-Z0-9\.\,\/]/;
         if (pressedkey.test(String.fromCharCode(e.which)))
            e.stopPropagation();
         }
      }

   function countlimit(maxlength, e, placeholder)
      {
      var theform = eval(placeholder);
      var lengthleft = maxlength-theform.value.length;
      var placeholderobj = document.all ? document.all[placeholder] : document.getElementById(placeholder);
      if (window.event || e.target&&e.target == eval(placeholder))
         {
         if (lengthleft < 0)
             theform.value = theform.value.substring(0, maxlength);
         placeholderobj.innerHTML = lengthleft
         }
      }

   function displaylimit(thename, theid, thelimit)
      {
      var theform = theid != "" ? document.getElementById(theid) : thename;
      var limit_text = 'можно ввести <span id="' + theform.toString() + '">' + thelimit + '</span> символов';  
      if (document.all || ns6)
         document.write(limit_text)
      if (document.all)
         {
         eval(theform).onkeypress = function(){ return restrictinput(thelimit, event, theform)}
         eval(theform).onkeyup = function(){ countlimit(thelimit, event, theform)}
         }
      else if (ns6)
         {
         document.body.addEventListener('keypress', function(event) { restrictinput(thelimit, event, theform) }, true);
         document.body.addEventListener('keyup', function(event) { countlimit(thelimit, event, theform) }, true);
         }
      }

   displaylimit("document.limitForm.limit", "", 160 );
</script>

Ограничивает и визуально показывает сколько осталось...выдрал из проекта полностью рабочий....

  Ответить  
 
 автор: PAT   (09.10.2008 в 01:08)   письмо автору
 
   для: serjinio   (09.10.2008 в 00:05)
 

>"Ограничивает и визуально показывает сколько осталось... полностью рабочий"

Это точно.
Рабочий! :-)

Особливо если способом "копи-пасте" ввести туда туеву хучу символов и нажать потом любую клавишу.
Скрипт УВЕРЕННО пишет, что "можно ввести минус2000 символов" :-)

  Ответить  
 
 автор: serjinio   (09.10.2008 в 18:21)   письмо автору
 
   для: PAT   (09.10.2008 в 01:08)
 

Скрипт был для админки, и если проблема с символами, то надо самому вставить регулярку...для проверки вводимых данных....он не для этого предназначен:)....предложите лучше!!!

  Ответить  
 
 автор: Doorgen   (26.12.2008 в 19:19)   письмо автору
 
   для: serjinio   (09.10.2008 в 18:21)
 

А вообще можно ли ограничить ? Пожалуйста очень надо, помогите с вопросом.

  Ответить  
 
 автор: Doorgen   (26.12.2008 в 22:35)   письмо автору
 
   для: Doorgen   (26.12.2008 в 19:19)
 

Все я сделал.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования