Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.05.2020, 21:08
Кандидат Javascript-наук
Отправить личное сообщение для 12345678 Посмотреть профиль Найти все сообщения от 12345678
 
Регистрация: 03.09.2012
Сообщений: 109

Показывать количество оставшихся символов в 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>
Ответить с цитированием
  #2 (permalink)  
Старый 09.05.2020, 22:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

форма запрет отправки маленьких сообщений
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>
Ответить с цитированием
  #3 (permalink)  
Старый 09.05.2020, 22:23
Кандидат Javascript-наук
Отправить личное сообщение для 12345678 Посмотреть профиль Найти все сообщения от 12345678
 
Регистрация: 03.09.2012
Сообщений: 109

рони

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

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

Если что, на сайте есть jQwerty
Ответить с цитированием
  #4 (permalink)  
Старый 09.05.2020, 22:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

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>

Последний раз редактировалось рони, 09.05.2020 в 23:06.
Ответить с цитированием
  #5 (permalink)  
Старый 09.05.2020, 23:02
Кандидат Javascript-наук
Отправить личное сообщение для 12345678 Посмотреть профиль Найти все сообщения от 12345678
 
Регистрация: 03.09.2012
Сообщений: 109

рони
Спасибо. Но тут уже показывает количество символов всегда, а хотелось бы, чтобы только если их меньше 50. Т.е. написал человек сообщение "Спасибо", нажал на кнопочку Отправить, а ему показало "Слишком мало символов, осталось 43". И он такой стал писать "Спасибо, всё теперь понятно стало." При этом после ввода каждого символа счётчик символов уменьшался бы 42... 41... 40... 39... и так далее. А когда бы комментарий преодолел 50 символ, то сообщение исчезало вовсе.
Ответить с цитированием
  #6 (permalink)  
Старый 09.05.2020, 23:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

12345678,
я пас, все возможные варианты можно составить на основе двух макетов выше, приложите свои усилия.

Последний раз редактировалось рони, 09.05.2020 в 23:08.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Просмотрела исходик jQuery Откорректируйте где не верно taksebe jQuery 5 23.11.2018 22:42
Как выводить количество слов с 3-х TEXTAREA haa Общие вопросы Javascript 3 05.08.2015 18:54
Количество введенных символов skillful Элементы интерфейса 4 12.08.2014 01:42
количество символов ivanweb jQuery 14 13.09.2012 16:26
Ограничить количество символов в textarea iNfantry jQuery 2 14.05.2012 11:35