weixin_33749242 2012-03-05 02:39 采纳率: 0%
浏览 6

自动建议列表框

Hi i have the following auto-suggestion box set up and i want to select the outputs with keyboard and mouse. how can i do that?

Javascript code:

 function showResult(string) {

     if (string.lenght==0) {
         document.getElementById("livesearch").innerHTML="";
         document.getElementById("livesearch").style.border="0px";
         return;
     }
     if (window.XMLHttpRequest) {
         // code for IE7+, Firefox, Chrome, Opera, Safari
         xmlhttp=new XMLHttpRequest();
     } else {
         //code for IE6, IE5
         xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
     }
     xmlhttp.onreadystatechange=function() {
         if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
         }
         document.getElementById("livesearch").innerHTML = xmlhttp.responseText;
         document.getElementById("livesearch").style.border = "1px solid #A5ACB2";
     }
     xmlhttp.open("GET","test.php?q=" + string,true);
     xmlhttp.send();
}

PHP code:

$xmlDoc=new DOMDocument();
//$xmlDoc->load("test.xml");
$xml = simplexml_load_file("test.xml");

//$x=$xmlDoc->getElementsByTagName('datas');

//get the q parameter from URL
$q = $_GET["q"];
if (strlen($q) > 0) {   
    foreach ($xml->datas as $a) {
        $var = $a->attributes();
        $domain = stristr($var,$q);
        echo $domain."
";
        echo "<br/>";
    }
    if (strlen($domain) == 0) {
        echo "no results";
    }

Everything works fine at this point. But I don't know how to interact with the list.

  • 写回答

1条回答 默认 最新

  • weixin_33716154 2012-03-05 06:42
    关注

    It would be better to user some proper autocomplete jQuery. You can search by "autocomplete jquery" and find out a jQuery which fits your requirements. If you want to write your own code then you can make functions which work for mouse and keyboard events:

    txtSearchBox.keyup(function (e) {
    
        // get keyCode (window.event is for IE)
        var keyCode = e.keyCode || window.event.keyCode;
        var lastSearch = txtSearchBox.val();
    
        // check for an ENTER 
        if (keyCode == 13) {
            OnEnterClick();
            return;
        }
    
        // check an treat up and down arrows
        if (OnUpDownClick(keyCode)) {
            return;
        }
    
        // check for an ESC
        if (keyCode == 27) {
            clearResults();
            return;
        }
    });
    

    And then in "OnEnterClick()", "OnUpDownClick()" and "OnUpDownClick()" you can display what you want like:

    function OnUpDownClick(keyCode) {
        if(keyCode == 40 || keyCode == 38){
    
            if(keyCode == 38){ // keyUp
                // Do something keyUp event
            } else { // keyDown
                // Do something for keyDown event
            }
    
            return true;
        } else {
            // reset
            return false;
        }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)