onfocus и onblur в search.module, Как?

Главные вкладки

Аватар пользователя Mарат Mарат 19 сентября 2008 в 16:19

Есть ли, несложная возможность, приписать полю поиска такое свойство?

<input type="text" name="login_name" value="Ваш логин" class="data" onfocus="if(this.value=='Поиск по сайту')this.value=''" onblur="if(this.value=='')this.value='Поиск по сайту'" />

Т.е. что бы в окошке поиска всегда светилась надпись "Поиск по сайту", а при шелчке в окне, надпись "Поиск по сайту" - исчезала. Как этого добиться? Что то методом бубенных танцев вокруг search.module у меня ничего не вышло.

Спасибо, заранее.

Комментарии

Аватар пользователя glu2006 glu2006 19 сентября 2008 в 17:03

В файле template.php пишите след код:

function phptemplate_search_block_form(&$form) {
  $form['search_block_form_keys']['#value'] = t('Search');
  $form['search_block_form_keys']['#attributes'] = array(
        'onBlur'=> "if (this.value.length == 0) {this.value='{$form['search_block_form_keys']['#value']}'}",
        'onFocus'=> "if (this.value== '{$form['search_block_form_keys']['#value']}') {this.value=''}"
  );
  return drupal_render($form);
}

что-то примерно такое )) точно не помню, но примерно так.

Аватар пользователя Mарат Mарат 19 сентября 2008 в 20:12

У меня 6 друпал, там вроде эта фишка работать не будет? Потому что нет под 6 друпал search_block_form которую можно вставить в template.php

Впрочем если прописать по тому принципу что вы привели, прямо search.module, то ничего кроме белой страницы не грузится. Как точно сделать, кто-то может подсказать?

почему например присвоенный мною класс, прописанный в style.css, в этом коде работает нормально:

'#attributes' => array('title' => t('Enter the terms you wish to search for.'), 'class' => 'searchBoxarea'),

а onBlur и onFocus ни под каким соусом не работают?

Аватар пользователя J. Bravo J. Bravo 20 сентября 2008 в 0:43

Проверено на drupal 5, может и в 6 можно по такому пути пойти? В папке с темой создать файл block-search-0.tpl.php и в него поместить:

<div id="search">
   <form action="/search/node" accept-charset="UTF-8" method="post" id="search-block-form">
    <div style="width:100%"><input type="text" placeholder="Поиск" name="search_block_form_keys" id="SearchField" class="field"></div>
    <input type="hidden" name="form_token" id="edit-search-block-form-form-token" value="<?php echo drupal_get_token('search_block_form'); ?>"/>
    <input type="hidden" name="form_id" id="edit-search-block-form" value="search_block_form"  />
    <input type="hidden" name="op" id="edit-submit" value="Поиск"  />
   </form>
 </div>
 <script>if(document.getElementById) var ph = new InputPlaceholder (document.getElementById ('SearchField'), 'Поиск', 'fieldfill', 'field');</script>       
Аватар пользователя Mарат Mарат 10 ноября 2015 в 11:45

нет, не сработало.

если ввести этот код:

onfocus="if(this.value=='Ваш логин')this.value=''"

и

onblur="if(this.value=='')this.value='Ваш логин'"

через firebug, то все работает.

В подтверждение картинка прикреплена.

Но когда вставляешь это в search.module то кавычки такие - " ,а не такие - ' , он похоже не обрабатывает нормально.

Что делать? Причем на drupal.org про это нигде в обсуждениях не нашел. Вернее обсуждения и вопросы есть, а решения нет.

Аватар пользователя Mарат Mарат 20 сентября 2008 в 20:45

Что никто не знает, возможно это или нет и как?

2 J. Bravo

С Вашим примером я наверное не все правильно сделал?

файл block-search-0.tpl.php я сделал, код поместил. Но по какому принципу он должен был начать работать, я не понял...

Аватар пользователя J. Bravo J. Bravo 21 сентября 2008 в 3:29

Идея заключается в том, что этот файл должен использоваться движком темы для построения блока с определенным идентификатором (в данном случае - search-0). Такой подход использовался в пятой версии. В версии 6 вполне возможно что-то изменилось, но думаю принципиальная возможность пойти по такому пути осталась. Поищите, как выполнять темизацию отдельных блоков в Drupal 6. Если не получится - пишите, попробуем разобраться вместе.

Аватар пользователя AndreyL AndreyL 23 августа 2009 в 20:41

Суммарно, опытным путем, т.к. иначе просто не умею:) (для 5 версии):

<div id="search">
   <form action="/search/node" accept-charset="UTF-8" method="post" id="search-block-form">
    <div style="width:100%">
      <input value="Поиск по сайту" onFocus="this.value=''" onBlur="if (this.value==''){this.value='Поиск по сайту'}" placeholder="Поиск" name="search_block_form_keys" id="SearchField" class="field">
    </div>
      <input type="hidden" name="form_token" id="edit-search-block-form-form-token" value="<?php echo drupal_get_token('search_block_form'); ?>"/>
      <input type="hidden" name="form_id" id="edit-search-block-form" value="search_block_form"  />
      <input type="hidden" name="op" id="edit-submit" value="Поиск"  />
   </form>
</div>
 <script>if(document.getElementById) var ph = new InputPlaceholder (document.getElementById ('SearchField'), 'Поиск', 'fieldfill', 'field');</script>