0

候補検索ボックスを作成しています。上または下に押して候補を確認すると、新しい強調表示されたクラスに少しの間変更されてから、デフォルトのクラスに戻ります。問題は、この行でphpを呼び出すときにあるようsearchReq.open("GET", '/search/ajax-suggest.php?search=' + str, true);です。それをコメントアウトし、値を search_suggest div にハードコードすると、機能は正常に動作します。このphpページは、後に改行文字を付けて値をエコーアウトしています。

HTMLページへの私の入力は

<form id="frmSearch" action="/search/index.php" method="get">

            <input type="text" id="zoom_query" name="zoom_query" alt="Search Criteria" onkeyup="searchSuggest(); " autocomplete="off"  />
            <input type="image" src="/images/search_button.gif" id="cmdSearch" name="cmdSearch" value="Search" alt="Run Search" /><br/>
            <div id="search_suggest">
            </div>
                        </form> 

私が持っている私のjsページで

function getXmlHttpRequestObject() {
if (window.XMLHttpRequest) {
    return new XMLHttpRequest();
} else if(window.ActiveXObject) {
    return new ActiveXObject("Microsoft.XMLHTTP");
} else {
    alert("Your Browser is out of date");
}
}

//Our XmlHttpRequest object to get the auto suggest
var searchReq = getXmlHttpRequestObject();

//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchSuggest() { 
if (searchReq.readyState == 4 || searchReq.readyState == 0) {
    var str = escape(document.getElementById('zoom_query').value);
    searchReq.open("GET", '/search/ajax-suggest.php?search=' + str, true);
    searchReq.onreadystatechange = handleSearchSuggest; 
    searchReq.send(null);   
}       
}

//Called when the AJAX response is returned.
function handleSearchSuggest() {
if (searchReq.readyState == 4) {
    var ss = document.getElementById('search_suggest')
    ss.innerHTML = '';
    var str = searchReq.responseText.split("\n");
    for(i=0; i < str.length - 1; i++) {
    var suggest = '<div class="suggest_link">' + str[i] + '</div>';
        ss.innerHTML += suggest;
    }
}
}
$(document).keyup(function(e) {
var $hlight = $('div.suggest_link_over'), $div = $('div.suggest_link');
if (e.keyCode == 40) {
    $hlight.removeClass('suggest_link_over').next().addClass('suggest_link_over');
    if ($hlight.next().length == 0) {
        $div.eq(0).addClass('suggest_link_over')
    }
} else if (e.keyCode === 38) {
    $hlight.removeClass('suggest_link_over').prev().addClass('suggest_link_over');
    if ($hlight.prev().length == 0) {
        $div.eq(-1).addClass('suggest_link_over')
    }
}
})
4

0 に答える 0