Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Ajax - быстрый поиск (http://forum.oszone.net/showthread.php?t=189988)

Antant10 01-11-2010 17:12 1532401

Ajax - быстрый поиск
 
Сделал на сайте быстрый поиск. Все отлично работает, проблема в одном - не исчезает блок с результатами поиска если кликнуть в любом месте сайта (вне блока)

Этот код в 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 1532471

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

Antant10 01-11-2010 19:59 1532530

Спасибо за ответ.

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

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

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

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

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

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

Sham 01-11-2010 20:59 1532563

можно и так
Код:

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 1532571

Спасибо огромное - работает!

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


Время: 17:15.

Время: 17:15.
© OSzone.net 2001-