Даже не знаю, как поставить вопрос... В общем нужен совет от гуру CSS и JS!

big boy
На сайте с 18.11.2006
Offline
356
494

Привет, серч!

Старая тема устарела, писать туда не могу - /ru/forum/889403

Вкратце, для тех кому лень переходить:

  • есть форма поиска от гугла
  • заменил их вотермарк (картинка с подсказкой) на свой
  • при клике на форму срабатывает правило css :focus и картинка исчезает
  • проблема - если фокус с поля убрать, то даже несмотря на то, что в поле есть текст, вотермарк возвращается назад и получается плохо

Пример:

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

Можно как-то реализовать это?

✔ Как я генерирую статьи через ИИ, которые приносят трафик - https://webmasta.ru/blog/16-vkalyvayut-roboty-ne-chelovek-stati-s-pomoschyu-ii-kotorye-prinosyat-trafik
Ragnarok
На сайте с 25.06.2010
Offline
239
#1
big boy:
ищите

Что вы ищете?

//TODO: перестать откладывать на потом
big boy
На сайте с 18.11.2006
Offline
356
#2
Ragnarok:
Что вы ищете?

Стыд и позор. Спасибо!

А по сабжу?

big boy
На сайте с 18.11.2006
Offline
356
#3

Шайтанама!

Решил-таки добить сегодня эту проблему, целый день гугления и вот рабочее решение:


$(document).ready(function() {
setInterval( function()
{
if($('#gsc-i-id1').val()) { //если строка поиска не пустая
document.getElementById("gsc-i-id1").className = ""; //удаляем css классы
document.getElementById("gsc-i-id1").className = "gsc-input-noimage"; //добавляем класс, в котором нет вотермарка
}
else { //если поле пустое
document.getElementById("gsc-i-id1").className = "gsc-input"; //возвращаем стандартный класс с нашим вотермарком
}
},10/*Time*/);
});

Не уверен, что это самый идеальный код, но рабочий. Если есть предложения по улучшению - велкам!

---------- Добавлено 17.09.2015 в 15:49 ----------

Один косяк обнаружил - до того, как полностью загрузится форма, в консоли вылезает ошибка:

TypeError: document.getElementById(...) is null

Оно и понятно, форма не загрузилась, а скрипт уже ищет её элементы. Но как только форма прогружается и ошибки прекращаются. Можно как-то пофиксить?

ДП
На сайте с 23.11.2009
Offline
203
#4

Ну вот по таймеру и проверяйте, есть ли форма. Как форму нашли - выполняйте нужный код и отключайте таймер.

DiAksID
На сайте с 02.08.2008
Offline
236
#5

$.ready замените на onload конкретного скрипта... и лучше вместо таймера повесьте на поле формы действие по onchange и все дела...

show must go on !!!...
big boy
На сайте с 18.11.2006
Offline
356
#6

Ребят, спасибо вам большое, но для меня это тёмный лес. Уже не раз писал, что в программировании я как обезьяна - могу в лучшем случае правильно скопипастить код и что-то совсем простое адаптировать.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий