Главная » Статьи » Статьи о/про uCoz » JS и JQ скрипты для uCoz

Подстановка текста в поле формы для поиска. Скрипт для юКоз (uCoz). jQuery

Вкратце вот предыстория....

Quote (Komoff)

В общем-то, было такое предложение по системе, сделать в форме поиска подстановку текста как у поисковых систем (Google, Яндекс и тп). В общем-то своим методом дилетанта:), подумал о том, что в принципе, можно хотя бы сделать такую же подстановку текста как у тегов при добавлении материала. Это конечно не гугл, но как фенька для сайта пойдет. Оказалось это сделать не так уж и сложно. Выдираем скрипт подстановки тегов со страницы добавления материалов и ставим его под форму поиска:

Code
<script type="text/javascript">new _uSuggestList('suggList','suggEdit',{separator:',',colwidth:['100%'],url:'/feat/?a=1'});</script>

Где "suggEdit" это id поля для которого будет осуществлять подстановка, его можно заменить на другой. Не помню есть ли у формы поиска выводимой спецкодом $SEARCH_FORM$ заданный id, т.к. у меня она собрана в ручную, задать id мне не составило труда. Вот в общем-то и всё.


Всё, и в самом деле не так уж и сложно, но, как почти всегда, есть одно «но» - стандартная форма поиска по сайту, что вставляется системным кодом $SEARCH_FORM$ - не имеет ID ...

В остальном же все просто ... и работает.
Оригинальную тему можно посмотреть/почитать/дополнить вот здесь ... «Подстановка текста в поиске» ...

А здесь и  сейчас - небольшая инструкция, как всё это организовать на своём сайте.

Как и написано выше - сама форма, и её составляющие, например, текстовое поле, для ввода текста, не имеют заданных идентификаторов ID, следовательно, дабы скрипт подстановки, работал правильно, да и просто работал, нужно для текстового поля (input name="q") установить ID, по которому скрипт будет получать данные о том, какие буквы вы вводите и показывать соответствующие подсказки из базы ключевых слов.

Вот иходник формы поиска по сайту. Стандартный вариант.

Code
<!-- <bc> -->
<div class="searchForm">
<form onsubmit="this.sfSbm.disabled=true" method="get" style="margin: 0pt;" action="/search/">
<div class="schQuery" align="center">
<input name="q" maxlength="30" size="20" class="queryField" type="text"> /* Вот этот input нас интересует */
</div>
<div class="schBtn" align="center">
<input class="searchSbmFl" name="sfSbm" value="Найти" type="submit">
</div>
</form>
</div>
<!-- </bc> -->

Из исходника чётко видно, что ID нужный нам инпут не имеет, зато имеет класс, и это уже неплохо.

Задача: присвоит уникальный ID этому полю.

Как и обычно, воспользуюсь теми возможностями, что предоставляет нам/вам уже подключённая, по умолчанию библиотека JavaScript - jQuery, а именно возможности при работе с элементами и использовании CSS селекторов.

Обратимся к форме, найдём нужный нам инпут и присвоим ему класс «suggEdit» - как и требуется в скрипте для вывода подсказок.
Я сделаю это примерно вот так:

Code
<script type="text/javascript">
$('div.searchForm form[action="/search/"] input.queryField').attr('id','suggEdit');
</script>

Где:

div.searchForm form[action="/search/"] input.queryField - находим форму с параметрами «action="/search/"» в блоке с классом «searchForm», а в ней инпут с классом «queryField».

.attr('id','suggEdit') - присваиваем ему атрибут «id» равный «suggEdit».


И теперь, после выполнения скрипта, блок с формой выглядит вот так:

Code
<!-- <bc> -->
<div class="searchForm"><form onsubmit="this.sfSbm.disabled=true" method="get" style="margin: 0pt;" action="/search/">
<div class="schQuery" align="center">
<input id="suggEdit" name="q" maxlength="30" size="20" class="queryField" type="text">
</div><div class="schBtn" align="center"><input class="searchSbmFl" name="sfSbm" value="Найти" type="submit">
</div></form></div>
<!-- </bc> -->

Все.
Я, и надеюсь что и вы, присвоили ID нужному инпуту. Осталось, всего навсего, собрать всё это воедино.

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

Code
<!-- <block5> --> /* У меня это block5 - у вас - может быть другой номер */
<_?if($SEARCH_FORM$)?_>
<table border="0" cellpadding="0" cellspacing="0" class="boxTable" style="overflow:visible!important;">
<tr>
<td class="boxTitle"><strong><!-- <bt> --><!--<s3163>-->Поиск по сайту<!--</s>--><!-- </bt> --></strong></td></tr>
<tr><td class="boxContent"><div align="center"><!-- <bc> -->$SEARCH_FORM$<!-- </bc> --></div></td></tr>
</table>
<script type="text/javascript">
$(function(){ /* Сокращённая запись $(document).ready() */
/* Start DocumentReady */
$('div.searchForm form[action="/search/"] input.queryField').attr('id','suggEdit');
new _uSuggestList('suggList','suggEdit',{separator:',',colwidth:['100%'],url:'/feat/?a=1'});
/* End DocumentReady */
});
</script>
<_?endif?_>
<!-- </block5> -->

Получится должно что-то вроде ...




Потоптать клаву, набивая слова и посмотреть результаты работы скрипта, можно вот здесь «http://tng.ucoz.ru/»


P.S.

Инструкция составлена по мотивам темы форума
«Подстановка текста в поиске»
Komoff Автор темы.

Всем удачи... ヅ
Flesh.

Автор инструкции: Likbezz a.k.a. Flesh




Источник: Подстановка текста в поле формы для поиска. Скрипт Для юКоз (uCoz). JavaScript, jQuery. Инструкция
Категория: JS и JQ скрипты для uCoz | Добавил: likbezz (27.08.2010)
Просмотров: 18090 | Комментарии: 7 | Теги: поле, формы, JavaScript, поиск, UCOZ, присвоит ID, SEARCH_FORM, jQuery, Подстановка текста, юкоз
Всего комментариев: 7
0  
7  ICE-DOG [Материал[20.04.2014]

Можно ли как-то сделать выпадающее списка поверх всего ? Просто у меня меню сайта загораживает часть выпадающего списка.

0  
5  BiMiX [Материал[17.10.2013]

Как такое сделать для /shop/search/ ????

0  
6  likbezz [Материал[18.10.2013]

Цитата BiMiX
Как такое сделать для /shop/search/ ????

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

0  
3  d1mS [Материал[20.01.2011]

нет likbezz ты не прав, это база тегов со всей системы то есть с каждого сайта. к примеру создай материал и в поле тег введи "pizdec3.14159" а потом проверь выдаст ли тебе поиск это.

0  
4  likbezz [Материал[23.01.2011]

d1mS,

Quote (d1mS)
нет likbezz ты не прав, это база тегов со всей системы то есть с каждого сайта
- Я знаю это.
Имелось в виду другое.

0  
1  FisherLV [Материал[05.01.2011]

Функция конечно работает. НО. Автору всё-же следовало буковками побольше вверху написать, что это не есть что-нибудь похожее, а именно тот самый поиск по тегам, добавленных к материалам. Функция конечно НЕ ИЩЕТ слова по заголовкам (или ещё где-нибудь) материалов, ка нам бы этого хотелось ... Во всяком случае по адресу /feat/?a=1 (по которому обращается скрипт) только база данных тегов, и ничего иного ...
Просто ясно написать, чтобы люди понимали, что скрипт НЕ БУДЕТ подставлять ,хоть частично, заголовки (названия) материалов ...

С уважением и.т.д.

0  
2  likbezz [Материал[07.01.2011]

Quote (FisherLV)
Автору всё-же следовало буковками побольше вверху написать, что это не есть что-нибудь похожее, а именно тот самый поиск по тегам, добавленных к материалам.

- Это не «тот самый поиск по тегам» - это подсказка поисковых запросов в саму форму, по тому, что вы уже набили в запрос. Это вообще к «тегам», принципиально, не имеет никакого отношения. Так как подстановку можно повесить и на форму от Google .... И при чем здесь «теги»?
...
Quote (FisherLV)
Функция конечно НЕ ИЩЕТ слова по заголовкам (или ещё где-нибудь) материалов, ка нам бы этого хотелось ...

Пост имеет название «Подстановка текста в поле формы для поиска»... И с «поиском слов по заголовкам» - не имеет ничего общего.
...
Quote (FisherLV)
Просто ясно написать, чтобы люди понимали, что скрипт НЕ БУДЕТ подставлять ,хоть частично, заголовки (названия) материалов ...

-? - А где написано обратное? .....
...
Как вам ещё «буковками побольше вверху написать» - название - «Подстановка текста в поле формы для поиска» - H1 - font:bold 20px/120% 'Times New Roman',serif; - куда ещё больше ....
...
Ну если только вам лично - в попап окно, блокирующее другие, с заголовком bold 100px/300% Verdana color #F00; ....
... ヅ ...

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]