Сейчас: 17:22:00   19-го апреля 2024 г.
UsefulScript.ruСкриптыТекстовые эффектыБегущая строка в поле input
4
17

Бегущая строка в текстовом поле input

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


Пример подобной бегущей строки в текстовом поле Вы можете наблюдать чуть ниже:



Почему-то данный способ подсказок для заполнения текстовых полей не получил широкого распространения и далеко не на каждом сайте можно встретить подобный визуальный эффект. Чаще используется атрибут placeholder, который создает статичную подсказку.


Чтобы получить подобную бегущую строку в поле текстовом input, воспользуйтесь JavaScript кодом, приведенном ниже (поместите его в начало Вашей странички):

JavaScript код:
<script type="text/javascript">
var 
line "Сюда введите Ваш номер телефона...";
var 
speed 100;
var 
0;
function 
m_line() {
if (
i++<line.lengthdocument.primer.forma.value line.substring(0,i);
else {
    
document.primer.forma.value " ";
    
0;
}
to setTimeout("m_line()"speed);
}
</script>

Далее необходимо добавить форму с текстовым полем input:

HTML код:
<div align="center">
 <
form name="primer" action="#">
  <
input type="text" size="35" name="forma" onFocus='clearTimeout(to);
  this.value="";' 
onBlur='m_line();'>
 </
form>
</
div>

Ну и в конце необходимо вызвать прописанную ранее функцию m_line() для того, чтобы наша бегущая строка "ожила":

JavaScript код:
<script type="text/javascript">
 
m_line();
</script>

Как видите, ничего сложного в данном JavaScript коде нету, но зато как эта бегущая строка эффектно смотрится по сравнению со статичной подсказкой.


Обратите внимание, что если кликнуть по данному текстовому полю, то скрипт бегущей строки автоматически остановится, и не будет мешать пользователю при вводе данных в поле. Если кликнуть в какое-нибудь другое место странички, то скрипт вновь возобновит свою работу и будет отображать бегущую строку. Если Вам необходимо отключить возобновление показа бегущей строки (когда поле было создано не для подсказки, а для отправки данных), то просто удалите onBlur=m_line(); из кода поля input.


Про бегущую строку в текстовом поле input с изменяющимся текстом можно посмотреть в соседней теме - input с изменяющимся текстом.

Дата создания: 17:26:58 20.06.2011 г.
Дата обновления: 14:40:37 09.10.2012 г.
Посещений: 7585 раз(а).

Комментарии посетителей (15 шт.):
Максим
0
# 656
(17:39:40  28.02.2013 г.)

А как сделать остановку после завершения печати текста?
Ответить

Administrator
-1
# 659
(20:44:10  01.03.2013 г.)

Очень просто. Достаточно заменить строки:
else {
document.primer.forma.value=" ";
i=0; }
на такую - else clearTimeout(to);
Ответить

Алексей
0
# 2100
(13:52:09  08.12.2014 г.)

Хочу использовать скрипт в textarea:
<textarea name="forma" onfocus='clearTimeout(to); this.value="";' onblur='m_line();' name="text" id="text" cols="40" rows="10" title="Написать сообщение" tabindex="3"></textarea>
Работает, строка "бежит", после клика по полю пропадает, но после того когда все поля (имя, email, поле тестового поля) заполнены при отправке письма ничего не происходит.
Точнее у меня страница проверки config.php выдает строчку:
$warning = '<div class = "warning"><h2 class = "warning_text">Для отправки сообщения нужно заполнить все поля&nbsp;!</h2>
<p class = "back"><a href = "javascript:history.back();">Вернуться назад</a></p></div>';
хотя все поля заполнены.
Если из textarea удаляю: name="forma" onfocus='clearTimeout(to); this.value="";' onblur='m_line();'
то все работает нормально, письмо отправляется.
Javascript имеется на странице, но вот такая проблема.
Ответить

Administrator
0
# 2103
(20:32:47  08.12.2014 г.)

Попробуйте удалить из textarea: onblur='m_line();' т.к. это событие возникает при потере фокуса элементом textarea и, как следствие, очищает содержимое textarea.
Ответить

Алексей
0
# 2104
(14:36:30  09.12.2014 г.)

Пробовал, не помогает. Для кнопки отправить, также не выходит.
Например, текст "Отправить сообщение" движется, но после клика, выдается сообщение, что не все поля заполнены, хотя информация есть во всех полях...
Ответить

Administrator
0
# 2107
(20:50:23  09.12.2014 г.)

Скрипт в данной теме рабочий. Вы задали полю textarea два раза имя (name="forma" и name="text") и скорее всего дело в Вашем коде (странице проверки), которая проверяет не то имя поля.
Ответить

Алексей
0
# 2112
(14:05:57  10.12.2014 г.)

У меня все три поля (имя, email и сам текст) проверяются и если поля не заполнены, то пользователь не сможет отправить письмо.
В данном случае, в textarea бегущая строка "Написать сообщение" и нет разницы пользователь написал письмо или нет отправится без проблем, хотя атрибут required прописан.
Если из text area удаляю:
onfocus='clearTimeout(to); this.value="";' onblur='m_line();' name="forma",
то если textarea не заполнена, то пользователь получит сообщение, что необходимо заполнить поле.
Получается, что бегущая строка воспринимается, как текст и как реализовать данный момент?
Ответить

Administrator
0
# 2116
(22:54:50  10.12.2014 г.)

Предлагаю заменить в двух местах в скрипте "document.primer.forma.value" на "document.primer.forma.placeholder". Правда в IE тогда работать не будет.
Ответить

Алексей
0
# 2845
(03:11:20  30.11.2015 г.)

Здравствуйте, а можно сделать так, чтобы ссылка "бежала"?
Например: <a class="button" href=""><marquee onMouseOver="this.stop()" onMouseOut="this.start()" Behavior="scroll" width="200px" scrollamount="3" Direction="left">Бегущая строка</marquee></a>

Так как тег marquee не пройдет валидацию, то хочется найти другое решение.
Для input - работает, а для ссылки с классом button, как в моем случае можно реализовать?
Заранее благодарен.
Ответить

Administrator
0
# 2847
(21:25:00  30.11.2015 г.)

Присвойте ссылке уникальный id, например: <a class="button" id="text" href="">
Далее в двух местах скрипта замените: document.primer.forma.value
На: document.getElementById('text').text
P.S. В IE работать не будет.
Ответить

Алексей
0
# 2848
(00:43:02  01.12.2015 г.)

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

Administrator
0
# 2849
(21:29:11  01.12.2015 г.)

Можно. Добавьте в JavaScript код новую функцию:
function full_line() {
document.getElementById('text').text=line;
clearTimeout(to);
}
А в ссылку добавьте события onmouseover и onmouseout:
<a class="button" id="text" onmouseover='full_line();' onmouseout='m_line();' href="">
Ответить

Алексей
0
# 2860
(22:36:42  02.12.2015 г.)

Доброе время суток.
Имеется форма отправки сообщения и в ней строчка, где я и хочу применить данный скрипт, но не работает:
echo '<input id="text" onmouseover="full_line();" onmouseout="m_line();" type="submit" value="Отправить">';
Если для ссылки в html странице подключать данный код, то все нормально:
<a id="text" class="button" onmouseover='full_line();' onmouseout='m_line();' href="">Бегущая строка</a>
А в php файле не срабатывает, можно нужно указывать id формы, например:
if (i++<line.length) document.forma.submit.value=line.substring(0,i);
Хотя пробовал, не получается...
Ответить

Administrator
0
# 2867
(23:44:52  04.12.2015 г.)

Для тега input следует использовать document.getElementById('text').value
P.S. Лишний код из Вашего комментария удалил.
Ответить

Роман
0
# 3305
(22:36:20  02.07.2016 г.)

Добрый день!
А возможно ли каким-то образом отключить валидацию бегущей строки? Т.к. при появлении текста бегущей строки браузер сразу показывает, что данные введены верно.
Ответить

Закрыть
Ваше имя:
938 + 11 =
Добавить комментарий:
Ваше имя:
938 + 11 =

Перед публикацией все комментарии проходят обязательную модерацию!

Если Вы хотите задать какой-либо вопрос, то сделайте это на нашем форуме.
Таким образом, Вы сможете быстрее получить ответ на интересующий Вас вопрос.
Посетителей онлайн: 5

Как Вы узнали о нашем сайте?