Как можно очистить <div перед запросом... Скрипт поисковка... который без нажатия на кнопку сразу выдает результаты поиска... Если быстро вводить текст, то предышущий вывод результата не исчезает... получается, что к предыдущему тксту добавляется новый... Это если быстро вводить текст... Если медленно, то нормально... Как очистить <div перед выводом? Пробывал поставить в скрипт на место где плюсики : document.getElementById('search-result') = " "; но тогда скрипт вообще не хочет искать... Подскажите пожалуйста, как решить проблему... [js] function createObject() { var request_type; var browser = navigator.appName; if(browser == "Microsoft Internet Explorer"){ request_type = new ActiveXObject("Microsoft.XMLHTTP"); } else { request_type = new XMLHttpRequest(); } return request_type; } var http = createObject(); function searchNameq() { searchq = encodeURI(document.getElementById('searchq').value); http.open('get', 'in-search.php?name='+searchq); http.onreadystatechange = searchNameqReply; http.send(null); } function searchNameqReply() { if(http.readyState == 4){ if (http.status == 200) { ++++++++++++++++++++++++++++ var response = http.responseText; document.getElementById('search-result').innerHTML = response; } } }[/js]
Тоже не помогает... Если быстро нажимаю (даже не мовсем быстро, как быстро печатать). то вот что получается... Дублирование результата... Как убрать эту фигню... http://s45.radikal.ru/i108/1009/c0/703d38691bfa.bmp
fifofafofi Отправляй запрос только один раз в определенный интервал времени. Функцию для этого я тебе дал. Где прописывать? Там, где приклеен обработчик отправки. Не по событию onKeyDown, а по временному отрезку. Каждый отрезок освобождает слой с помощью innerText/innerHTML.
fifofafofi Интервал ставится единожды. Даю пример, но не гарантирую корректность примера, т.к. проверять времени нет. Но алгоритм поймешь: [js]document.onload = function() { setInterval(function() { // Тут делаешь запрос AJAX // Значение из поля получаем так var fieldValue = document.getElementById("name").value; }, 1000); }[/js]
йомайо... чтото туплю)))... а по временному отрезку это как? on что? (пример: onload? или что) ? не могу чтото понять..
Зделал <body onload = "getthis()"> Потом так... Но не хочет работать... [js] function getthis() { setInterval(function searchNameq() { searchq = encodeURI(document.getElementById('searchq').value); document.getElementById('search-result').innerHTML = ''; http.open('get', 'in-search.php?name='+searchq); http.onreadystatechange = searchNameqReply; http.send(null); },2000); }[/js]
Прости, я не синтаксический анализатор =) Что именно не работает? Напихай алертов построчно, посмотри в консоли ошибок и т.д.
fifofafofi У меня сегодня нет времени на подробные разъяснения и копания в коде, со слов читай: 1. При загрузке страницы установить интервал, по которому будет обрабатываться поле ввода 2. Функция обработки проверяет длину минимально допустимую в этом поле и, если она соответствует допустимой, переходит на шаг 3 3. На этом шаге мы делаем запрос к серверу и, в случае успеха, заменяем контент на полученный Всего 3 шага, кода там практически нет =) Где можно оступиться - понять сложно, поэтому сегодня в коде рыться времени нет.
Консоль ошибок пишет: стоит <body onLoad="getthis()"> Event thread: load Error: name: ReferenceError message: Statement on line 1: Undefined variable: getthis stacktrace: n/a; see opera:config#UserPrefs|Exceptions Have Stacktrace