Войти

Показать полную графическую версию : Ajax - быстрый поиск


Antant10
01-11-2010, 17:12
Сделал на сайте быстрый поиск. Все отлично работает, проблема в одном - не исчезает блок с результатами поиска если кликнуть в любом месте сайта (вне блока)

Этот код в HEAD

<script type="text/javascript" language="javascript">
var req;

function loadXMLDoc(key) {

var url="search.php?keyword="+key;

// Internet Explorer
try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
catch(e) {
try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
catch(oc) { req = null; }
}

// Mozailla/Safari
if (!req && typeof XMLHttpRequest != "undefined") { req = new XMLHttpRequest(); }

// Call the processChange() function when the page has loaded
if (req != null) {
req.onreadystatechange = processChange;
req.open("GET", url, true);
req.send(null);

}
}

function processChange() {
// The page has loaded and the HTTP status code is 200 OK
if (req.readyState == 4 && req.status == 200) {

// Write the contents of this URL to the searchResult layer
getObject("quicksearch").innerHTML = req.responseText;
}
}

function getObject(name) {
var ns4 = (document.layers) ? true : false;
var w3c = (document.getElementById) ? true : false;
var ie4 = (document.all) ? true : false;

if (ns4) return eval('document.' + name);
if (w3c) return document.getElementById(name);
if (ie4) return eval('document.all.' + name);
return false;
}
</script>


Сама форма


<input name="keyword" id="search_area" type="text" onKeyUp="loadXMLDoc(this.value);" autocomplete="off" />
<div id="quicksearch"></div>


CSS-код из файла стилей

#quicksearch {text-align:left; position: absolute; top: 110px; left: 645px; background-color:#FFFFE8; color: #333333; font-size:12px; z-index:500; width:300px; }
#quicksearch ul, #quicksearch li {padding:0; margin:0; border:0; list-style:none;}
#quicksearch li {border-bottom:solid 1px #DEDEDE;}
#quicksearch li a{display:block; padding:4px; text-decoration:none; color:#000000; font-weight:bold;}
#quicksearch li a small{display:block; text-decoration:none; color:#999999; font-weight:normal;}
#quicksearch li a:hover{background:#FFFFCC;}
#quicksearch ul {padding:6px;}



Помогите пожалуйста

Sham
01-11-2010, 18:52
не вижу в коде, за счет чего он должен исчезать. Повесьте на input onblur="this.style.display='none'" какой-нибудь

Antant10
01-11-2010, 19:59
Спасибо за ответ.

При наборе текста в input появляется выпадающий список с перечнем названий (как в поиске Гугла).

В коде изначально не было предусмотрено исчезновение этого списка. Этот пример нашел в Инете.

Если onblur повесить на input, исчезает сам input, а не список. А нужно, чтобы исчезал список, если кликнуть в другом месте сайта.

Пробовал через jQuery autocomplete, но там проблемы с поиском, если вводить поисковые слова через пробел.

Пробовал разные варианты с этим кодом, не получается.

Помогите плиз

Sham
01-11-2010, 20:59
можно и так
window.document.onclick = function(e)
{
var e = e || window.event;
var r = e.target || e.srcElement;
if(r.id != 'quicksearch' && r.id != 'search_area') document.getElementById('quicksearch').style.display = 'none';
}

Antant10
01-11-2010, 21:08
Спасибо огромное - работает!

Только недавно начал JavaScript, в основном по PHP + MySQL




© OSzone.net 2001-2012