Ограничение символов для нескольких 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: |
Цитата:
Цитата:
Передавать тот ИД в функцию, а там уже использовать элемент с этим ИД... |
nekada,
А покажите фрагмент вашего html с несколькими текстареа и инпутами. Они все в одной form? |
Цитата:
|
Вообще без 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>
|
Блин! Реально круто :) работает, я так понял всё дело только в этом?
onkeypress="limitText(this,this.nextElementSibling,100);" Заметил, что если поставить br между textarea и input, тогда не работает ) |
:)
<!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>
|
рони,
Ваш вариант еще круче, даже в телефоне работает, но я имел ввиду 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> |
Цитата:
|
рони,
Просто я пишу в одном поле,а символы считает в другом, которое ниже, а в самом последнем поле совсем ничего не считает :) пиши сколько хочешь :))))) |
nekada,
не понимаю |
рони,
Ну смотрите, я пишу в верхнем поле, а input считает символы в поле, которое ниже, если пишу в поле , которое ниже, input считает возле поля, которое еще ниже, а если уже пишу в самом нижнем поле последним, он совсем ничего не считает, и текста можно набрать хоть 1000 символов. А с самым верхнем полем input совсем не считает, но больше 100 символов туда не зарядишь. Мистика да и только ) |
nekada,
не осилил, пишите код и описание проблемы
<!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('li [name="count"]');
[].forEach.call(document.querySelectorAll('li 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>
<ul>
<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>
</ul>
</body>
</html>
|
Блин я его в тело пихал, а сейчас в head запихнул стало норм работать, спасибо большое :)
|
| Часовой пояс GMT +3, время: 16:26. |