- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть код
JS
//Живой поиск
$('.who').bind("change keyup input click", function() {
if(this.value.length >= 2){
$.ajax({
type: 'post',
url: "search.php", //Путь к обработчику
data: {'referal':this.value},
response: 'text',
success: function(data){
$(".search_result").html(data).fadeIn(); //Выводим полученые данные в списке
}
})
}
})
$(".search_result").hover(function(){
$(".who").blur(); //Убираем фокус с input
})
//При выборе результата поиска, прячем список и заносим выбранный результат в input
$(".search_result").on("click", "li", function(){
s_user = $(this).text();
$(".search_result").fadeOut();
$(".who").val(s_user).attr('', ''); //деактивируем input, если нужно
})
})
PHP обработчик
define("DB_NAME",""); //Имя базы
define("DB_USER",""); //Пользователь
define("DB_PASSWORD","m"); //Пароль
define("PREFIX",""); //Префикс если нужно
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$mysqli -> query("SET NAMES 'utf8'") or die ("Ошибка соединения с базой!");
if(!empty($_POST["referal"])){ //Принимаем данные
$referal = trim(strip_tags(stripcslashes(htmlspecialchars($_POST["referal"]))));
$db_referal = $mysqli -> query("SELECT * from ".PREFIX."city WHERE city LIKE '%$referal%'")
or die('Ошибка №'.__LINE__.'<br>Обратитесь к администратору сайта пожалуйста, сообщив номер ошибки.');
while ($row = $db_referal -> fetch_array()) {
echo "\n<li>".$row["city"]."</li>"; //$row["name"] - имя таблицы
}
}
При клике на нужный ответ в поле input отображается нужная фраза, но в атрибуте value его нет. Как передать этот параметр в обработчик?
но в атрибуте value его нет
потому что вы грузите его яваскриптом - он не меняет исходный код страницы.Но то что вы видите в поле можете спокойно передавать в базу
потому что вы грузите его яваскриптом - он не меняет исходный код страницы.Но то что вы видите в поле можете спокойно передавать в базу
А каким образом по нажатию кнопки ОТПРАВИТЬ передать выбранное значение?
$(".who").val(s_user).attr('', ''); //деактивируем input, если нужноДеактивируем:
$(".who").val(s_user).attr('disabled', 'disabled');Или активируем
$(".who").val(s_user).attr('disabled', false);Или ничего не делаем:
$(".who").val(s_user);Спасибо. С отправкой разобрался. Даже в коде ничего менять не пришлось. ИЗначально $_POST не выводило.
С JS сколько пытался подружиться, так и не сложились отношения.
Подскажите, как реализовать поиск таким образом, чтоб если не нашел совпадений, то выводил "что совпадений не найдено" и при потери фокуса с input поле очищалось.
Город не найден я сделал.
Как сделать, чтобы поле input очищалось при условии, что город не найден и что был клик вне этого input?
while ($row = $db_referal -> fetch_array()) { $i++;
echo "\n<li><span>".$row["city"]."</span></li>"; //$row["name"] - имя таблицы
}
if($i == 0){echo "\n<li>Нет такого города</li>";}
s_user = $(this).text();
$(".search_result").fadeOut();
$(".who").val(s_user);
})
Сделал подобным образом. Поле не очищается. Может ли это связано с тем, фраза передается вместе с тэгом li? Хотя я и так пробовал <li>...</li>
jQuery(function($){
$(document).mouseup(function (e){ // событие клика по веб-документу
var div = $("#popup"); // тут указываем ID элемента
if (!div.is(e.target) // если клик был не по нашему блоку
&& div.has(e.target).length === 0) { // и не по его дочерним элементам
div.hide(); // скрываем его
}
var popup_text = $("#popup").text();
var input = $(".who");
if (!input.is(e.target) && popup_text=='Нет такого города'){
$("#popup").html('');
$(".who").val('');
}
});
});
После
var popup_text = $("#popup").text();Вставьте
И поглядите какой там текст показывает.
После
var popup_text = $("#popup").text();Вставьте
И поглядите какой там текст показывает.
Спасибо ☝
Последний вопрос и все)
Как сделать, чтобы если текст равен 'Нет такого города', не срабатывал клик по кнопке отправить и клавиша enter?
$("form").submit( function () {if($("#popup").text()=='Нет такого города'){return false;}
} );