Показать сообщение отдельно
  #3 (permalink)  
Старый 15.05.2009, 11:51
Аспирант
Отправить личное сообщение для Pattern Посмотреть профиль Найти все сообщения от Pattern
 
Регистрация: 13.05.2009
Сообщений: 37

Я бы не стал убивать какую либо функцию в обработчике события, ибо потом её придётся каким то образом возвращать обратно, соответсвенно для этого нужна дополнительная переменная-хранилище. В общем, это лишняя головная боль.
Думаю, тут лучше поменять саму логику появления и исчезновения элементов страницы. Как я понял по поставленной задаче, вы пытаетесь сделать нечто подобное выпадающего списка при вводе поиского слова (как это реализовано например в гугле). Я бы это реализовал так:
<input id="srch" type="text" name="text" value="" style="width:200px" />
<div id="dropDownList" style="display: none;margin: -1px 0px 0px 0px; border: 1px solid #0000ff; width:200px;">
	<ul style="margin:0px">
		<li style="cursor:pointer" onclick="insSrchStr(this)">Пункт 1</li>
		<li style="cursor:pointer" onclick="insSrchStr(this)">Пункт 2</li>
		<li style="cursor:pointer" onclick="insSrchStr(this)">Пункт 3</li>
	</ul>
</div>
<script language="javascript" type="text/javascript">
<!--
function insSrchStr(o){
	document.getElementById('srch').value=o.innerHTML;
	document.getElementById('dropDownList').style.display='none';
}
function init(){
	document.getElementById('srch').onmouseover=function(){
		document.getElementById('dropDownList').style.display='block';
	}
	document.getElementById('srch').onmouseout=function(){
		document.getElementById('dropDownList').style.display='none';
	}
	document.getElementById('dropDownList').onmouseover=function(){
		document.getElementById('dropDownList').style.display='block';
	}
	document.getElementById('dropDownList').onmouseout=function(){
		document.getElementById('dropDownList').style.display='none';
	}
}
document.body.onload=init();
//-->
</script>
Хитрость заключается в том, что слой со списком находится 1 пикселем над input-полем. Соответсвенно, если пользователь возжелает что то выбрать и появившегося списка, он мышь будет перемещать сверху вниз. Поэтому событие onmouseover над слоем возникнет раньше, чем onmouseout input-поля, соответственно, слой не исчезнет. Ну а далее, дело техники.
Ответить с цитированием