Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Ограничение символов для нескольких textarea (https://javascript.ru/forum/dom-window/66456-ogranichenie-simvolov-dlya-neskolkikh-textarea.html)

nekada 16.12.2016 00:58

Ограничение символов для нескольких textarea
 
Тук, тук, здрасте.
есть скприт
<script>
function limitText(limitField, limitCount, limitNum) { 
if (limitField.value.length > limitNum) { 
limitField.value = limitField.value.substring(0, limitNum); 
} else { 
 limitCount.value = limitNum - limitField.value.length; 
 } 
 }
</script>


<textarea id="1" onKeyDown="limitText(this,this.form.count,100);" onKeyUp="limitText(this,this.form.count,100);"></textarea>
<input readonly type="text" name="count" size="3" value="100"> осталось символов


Все работает на ура с одним текстовым поле, но ситуация такова, что их можно добавить несколько штук, но id у них разное! И input перестает считать символы, подскажите как это можно поправить. Как привязать input с оставшиеся символами к определенному текстовому полю через его id.:thanks:

ksa 16.12.2016 08:35

Цитата:

Сообщение от nekada
Все работает на ура с одним текстовым поле, но ситуация такова, что их можно добавить несколько штук, но id у них разное!
<input readonly type="text" name="count" size="3" value="100">

Тут ведь нет ИД. :blink:
Цитата:

Сообщение от nekada
Как привязать input с оставшиеся символами к определенному текстовому полю через его id.

Как вариант...
Передавать тот ИД в функцию, а там уже использовать элемент с этим ИД...

Dilettante_Pro 16.12.2016 10:17

nekada,
А покажите фрагмент вашего html с несколькими текстареа и инпутами. Они все в одной form?

nekada 16.12.2016 12:33

Цитата:

Сообщение от ksa (Сообщение 438163)
Как вариант...
Передавать тот ИД в функцию, а там уже использовать элемент с этим ИД...

Вы можете показать как это сделать на примере? Собственно в этом и был вопрос)

Dilettante_Pro 16.12.2016 12:51

Вообще без id
<textarea oninput="limitText(this,this.nextElementSibling,100);"></textarea>
   <input readonly type="text" name="count" size="3" value="100"> осталось символов
   <textarea onkeydown="limitText(this,this.nextElementSibling,100);"></textarea>
   <input readonly type="text" name="count" size="3" value="100"> осталось символов
   <textarea onkeyup="limitText(this,this.nextElementSibling,100);"></textarea>
   <input readonly type="text" name="count" size="3" value="100"> осталось символов
   <textarea onkeypress="limitText(this,this.nextElementSibling,100);"></textarea>
   <input readonly type="text" name="count" size="3" value="100"> осталось символов

<script>
function limitText(limitField, limitCount, limitNum) {
if (limitField.value.length > limitNum) { 
limitField.value = limitField.value.substring(0, limitNum); 
} else { 
 limitCount.value = limitNum - limitField.value.length; 
 } 
 }
</script>

nekada 16.12.2016 22:05

Блин! Реально круто :) работает, я так понял всё дело только в этом?
onkeypress="limitText(this,this.nextElementSibling,100);"

Заметил, что если поставить br между textarea и input, тогда не работает )

рони 16.12.2016 22:21

:)
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script>
    window.addEventListener('DOMContentLoaded', function() {
      var inp = document.querySelectorAll('[name="count"]');
      [].forEach.call(document.querySelectorAll('textarea'), function(area, i) {
              var count = inp[i], limit = count.value;
              area.addEventListener('input', function() {
                  area.value = area.value.substring(0, limit);
                  count.value = limit - area.value.length;
              });
          });
        });
  </script>
</head>

<body>
  <textarea></textarea>
  <input readonly type="text" name="count" size="3" value="100"> осталось символов<br>
  <textarea></textarea>
  <input readonly type="text" name="count" size="3" value="100"> осталось символов<br>
  <textarea></textarea>
  <input readonly type="text" name="count" size="3" value="100"> осталось символов<br>
  <textarea></textarea>
  <input readonly type="text" name="count" size="3" value="100"> осталось символов<br>
</body>
</html>

nekada 16.12.2016 22:40

рони,
Ваш вариант еще круче, даже в телефоне работает, но я имел ввиду br между textarea и input, а структура такая
<li>
<img>
<textarea></textarea>
<br>
<input readonly type="text" name="count" size="3" value="100"> осталось символов<br>
<span><a href="#">ссылко</a></span>
</li>
и т.д
<li>
<img>
<textarea></textarea>
<br>
<input readonly type="text" name="count" size="3" value="100"> осталось символов<br>
<span><a href="#">ссылко</a></span>
</li>
и т.д 
<li>
<img>
<textarea></textarea>
<br>
<input readonly type="text" name="count" size="3" value="100"> осталось символов<br>
<span><a href="#">ссылко</a></span>
</li>

рони 16.12.2016 22:42

Цитата:

Сообщение от nekada
структура такая

это не важно.

nekada 16.12.2016 22:44

рони,
Просто я пишу в одном поле,а символы считает в другом, которое ниже, а в самом последнем поле совсем ничего не считает :) пиши сколько хочешь :)))))


Часовой пояс GMT +3, время: 12:01.