Показывать количество оставшихся символов в 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, время: 16:09. |