Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Печатает... Не печатает... (https://javascript.ru/forum/jquery/48506-pechataet-ne-pechataet.html)

accept 06.07.2014 20:31

Печатает... Не печатает...
 
подскажи плиз как реализовать следующее:
есть, например, textarea, при keydown лабел который находится рядом меняет свой текст на "Печатает...", если же пользователь не печатает, меняет на "Не печатает..."

foo 06.07.2014 21:39

Попробуй так
Код:

label=document.getElementById("label")
label.innerHTML="NOT"
textarea=document.getElementById("area")
textarea.addEventListener("focus", function(){this.onkeydown=function(){label.innerHTML="PRINT"}})
textarea.addEventListener("blur", function(){label.innerHTML="NOT"})

Код:

<html>
<head><title>head</title></head>
<body>
<textarea id="area"></textarea>
<div id="label"></div>
</body>
</html>


foo 06.07.2014 21:46

Цитата:

Сообщение от accept
если же пользователь не печатает

Да, вот это я сразу не заметил. Видимо вариант выше тебе не подойдет. Тут наверное нужно через сетинтервал решать. Ща, чуть позжа мож напишу, если кто другой не напишет

accept 06.07.2014 22:34

89

accept 06.07.2014 22:35

Цитата:

Сообщение от foo (Сообщение 319739)
Да, вот это я сразу не заметил. Видимо вариант выше тебе не подойдет. Тут наверное нужно через сетинтервал решать. Ща, чуть позжа мож напишу, если кто другой не напишет

напиши плиз код

foo 06.07.2014 23:40

Быдлокод конечно, но, вроде, работает:
Код:


label=document.getElementById("label")
label.innerHTML="NOT PRINTING"
textarea=document.getElementById("area")
textarea.fixValue=textarea.value
textarea.getValue=function(){return this.value}
textarea.onkeydown=function(){label.innerHTML="PRINTING"}//сокращаем отклик


observer="id=setInterval(function(){"+
  "if(textarea.fixValue===textarea.getValue()){label.innerHTML=\"NOT PRINTING\"; return}"+
  "label.innerHTML=\"PRINTING\"; textarea.fixValue=textarea.getValue()"+
"}, 1000)"

textarea.addEventListener("focus", function(){eval(observer)})
textarea.addEventListener("blur", function(){clearInterval(id)})


accept 07.07.2014 00:08

Цитата:

Сообщение от foo (Сообщение 319739)
Да, вот это я сразу не заметил. Видимо вариант выше тебе не подойдет. Тут наверное нужно через сетинтервал решать. Ща, чуть позжа мож напишу, если кто другой не напишет

Цитата:

Сообщение от foo (Сообщение 319754)
Быдлокод конечно, но, вроде, работает:
Код:


label=document.getElementById("label")
label.innerHTML="NOT PRINTING"
textarea=document.getElementById("area")
textarea.fixValue=textarea.value
textarea.getValue=function(){return this.value}
textarea.onkeydown=function(){label.innerHTML="PRINTING"}//сокращаем отклик


observer="id=setInterval(function(){"+
  "if(textarea.fixValue===textarea.getValue()){label.innerHTML=\"NOT PRINTING\"; return}"+
  "label.innerHTML=\"PRINTING\"; textarea.fixValue=textarea.getValue()"+
"}, 1000)"

textarea.addEventListener("focus", function(){eval(observer)})
textarea.addEventListener("blur", function(){clearInterval(id)})


не работает(

foo 07.07.2014 00:12

Цитата:

Сообщение от accept
не работает(

Не знаю, у меня в мозиле работает. Ты в чем запускаешь?

foo 07.07.2014 00:14

ты во этот код в хтмл не забыл вставить случаем?
<body>
<textarea id="area"></textarea>
<div id="label"></div>
</body>

рони 07.07.2014 00:16

:-?
<!DOCTYPE HTML>

<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
</head>

<body>
    <textarea id="area"></textarea>
    <div id="label">Не печатает...</div>
    <script>
        var timer, show = document.querySelector('#label');
        document.querySelector('#area').oninput = function () {
            window.clearTimeout(timer);
            show.innerHTML = 'Печатает...';
            window.setTimeout(function () {
                show.innerHTML = 'Не печатает...'
            }, 1500)
        }
    </script>
</body>

</html>


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