Показывать количество оставшихся символов в textarea
Привет!
Подскажите, как переделать этот код, чтобы количество набираемых символов не было видно. А если пользователь написал сообщение, к примеру, в 40 символов, и попытался отправить, то выводилось бы "Слишком мало символов, осталось <тут количество оставшихся символов в реальном времени>". И когда пользователь набирал бы 51 символ, то сообщение скрывалось.
<script type="text/javascript">
function CheckLength() {
var msg_area = document.getElementById("Message");
msg_area.innerHTML = "";
if (document.getElementById("membershortdescription").value.length < 50) {
msg_area.innerHTML = "Слишком мало символов";
return false;
} else document.getElementById("form3").submit();
}
function textCounter(membershortdescription, counterID, minLen) {
cnt = document.getElementById(counterID);
if (membershortdescription.value.length < minLen) {
cnt.innerHTML = minLen - membershortdescription.value.length;
} else {
cnt.innerHTML = "OK";
}
}
</script>
<form action="mypage.php" name="form3" enctype="multipart/form-data" method="post" onsubmit="return CheckLength ()">
<textarea rows="8" cols="38" name="membershortdescription" id="membershortdescription" class="profileFormSelect" onKeyUp="textCounter(this,'count_display',50);" onBlur="textCounter(this,'count_display',50);"></textarea>
<br />
<span id="count_display">50</span>
<span id="Message" style="color: #ff0000"></span>
<input type='submit' value='submit'>
</form>
|
форма запрет отправки маленьких сообщений
12345678,
на всякий случай minlength
<!doctype html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
#Message{
color: #ff0000;
}
</style>
<script>
document.addEventListener("DOMContentLoaded", function() {
let form = document.forms.form3;
let textarea = form.membershortdescription;
let msg_area = document.getElementById("Message");
let count = document.getElementById("count_display");
let min = 51;
form.addEventListener("submit", function(event) {
let {length} = textarea.value;
let correctly = length >= min;
msg_area.innerHTML = correctly ? "" : "Слишком мало символов";
count.hidden = correctly;
correctly || event.preventDefault();
})
form.addEventListener("input", function(event) {
let {length} = textarea.value;
let remainder = min - length;
remainder || (count.hidden = true)
count.innerHTML = count.hidden ? "" : remainder;
msg_area.innerHTML = count.hidden ? "" : "Символов осталось";
})
});
</script>
</head>
<body>
<form action="mypage.php" name="form3" enctype="multipart/form-data" method="post" >
<textarea rows="8" cols="38" name="membershortdescription" id="membershortdescription" class="profileFormSelect" ></textarea>
<br/>
<span id="count_display" hidden></span>
<span id="Message"></span>
<input type='submit' value='submit'>
</form>
</body>
</html>
|
рони
Спасибо. А может быть можно сразу показывать количество оставшихся символов, а не после набора следующего. Просто человек увидит что слишком мало и просто откажется от написания комментария. А так он сразу будет видеть, что останется всего ничего дописать и продолжит комментарий. Если что, на сайте есть jQwerty |
12345678,
:-?
<!doctype html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
#Message{
color: #ff0000;
}
</style>
<script>
document.addEventListener("DOMContentLoaded", function() {
let form = document.forms.form3;
let textarea = form.membershortdescription;
let msg_area = document.getElementById("Message");
let count = document.getElementById("count_display");
let min = 51;
const validate = function(event) {
let {length} = textarea.value;
let correctly = length >= min;
let submit = event.type == "submit";
msg_area.innerHTML = correctly ? "" : submit ? "Слишком мало символов" : `<br>${min - length} осталось`;
count.innerHTML = correctly || submit ? "" : `${min} символ минимум`;
correctly || event.preventDefault();
}
form.addEventListener("submit", validate)
form.addEventListener("input", validate)
});
</script>
</head>
<body>
<form action="mypage.php" name="form3" enctype="multipart/form-data" method="post" >
<textarea rows="8" cols="38" name="membershortdescription" id="membershortdescription" class="profileFormSelect" ></textarea>
<br/>
<span id="count_display">51</span>
<span id="Message">символ минимум</span>
<input type='submit' value='submit'>
</form>
</body>
</html>
|
рони
Спасибо. Но тут уже показывает количество символов всегда, а хотелось бы, чтобы только если их меньше 50. Т.е. написал человек сообщение "Спасибо", нажал на кнопочку Отправить, а ему показало "Слишком мало символов, осталось 43". И он такой стал писать "Спасибо, всё теперь понятно стало." При этом после ввода каждого символа счётчик символов уменьшался бы 42... 41... 40... 39... и так далее. А когда бы комментарий преодолел 50 символ, то сообщение исчезало вовсе. |
12345678,
я пас, все возможные варианты можно составить на основе двух макетов выше, приложите свои усилия. |
| Часовой пояс GMT +3, время: 01:49. |