Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Проблема с onselect/onblur (https://javascript.ru/forum/dom-window/11290-problema-s-onselect-onblur.html)

Teledrug 16.08.2010 14:50

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

Есть поисковая форма и над ней картинка:
<img id="rss" src="/img/rss.gif" alt="RSS" width="200" height="78" border="0" />
<form id="search" action="">
	<input id="searcquery" name="query" type="text" value="Что искать?" onfocus="showSearchButon(this)" onblur="hideSearchButton()" /><br />
	<input id="searchbutton" type="submit" value="Поиск" />
</form>

При выборе строки поиска выполняется следующий код:
/* Предварительно была загружена картинка img['rss_small'] 
#searchbutton - display: none*/
function showSearchButon (obj) {
	obj.value='';
	var image=document.getElementById('rss');
	img['rss']=image;
	image.height=50;
	image.src=img['rss_small'].src;
	document.getElementById('searchButton').style.display='inline';
}

При потере фокуса выполняется функция:
function hideSearchButton () {
	document.getElementById('rss').height=78;
	document.getElementById('rss').src=img['rss'];
	document.getElementById('searchButton').style.display='none';
}

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

Sweet 16.08.2010 15:03

Цитата:

Сообщение от Teledrug
Необходимо сделать форму поиска при выборе которой отображается поисковая кнопка, а при потере фокуса кнопка убирается.

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

exec 16.08.2010 15:32

При клике на кнопку выполнять ту же функцию, что выполняется при получении полем фокуса.

Teledrug 16.08.2010 17:35

Цитата:

Сообщение от exec (Сообщение 67548)
При клике на кнопку выполнять ту же функцию, что выполняется при получении полем фокуса.

Клика по кнопке вообще не происходит - она исчезает раньше.

Это не чушь. Sweet если нечего сказать дельного - не пиши.

exec 16.08.2010 18:07

Есть ещё такой вариант: присваиваем полю onfocus, onblur убираем вообще. Вешаем на document обработчик onclick, каждый раз смотрим event.target, если это не кнопка, то скрываем поле.

Sweet 16.08.2010 18:51

Самое смешное, что мне есть что сказать, просто я не хочу:)

Kolyaj 17.08.2010 08:24

Цитата:

Сообщение от Teledrug
Возможно ли сделать событие по потере фокуса со всей формы или как-то по другому решить проблему.

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

Идея так себе, да.

Teledrug 23.08.2010 13:23

Цитата:

Сообщение от exec (Сообщение 67571)
Есть ещё такой вариант: присваиваем полю onfocus, onblur убираем вообще. Вешаем на document обработчик onclick, каждый раз смотрим event.target, если это не кнопка, то скрываем поле.

Именно так и сделал, спасибо.


Часовой пояс GMT +3, время: 13:54.