簡體   English   中英

自動建議鍵盤使用

[英]AUTO-SUGGESTION keyboard use

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Ajax Auto Suggest</title>
        <script type="text/javascript" src="jquery-1.2.1.pack.js"></script>
        <script type="text/javascript">
        var stringcount = 0;
        var st = "";
        var vv = "f";
        function lookup2(e,inpstring)
        {
            lookup1(e.keyCode,inpstring);
        }
        function lookup1(j,inputstring)
        {
            var x= inputstring.length;
            st = inputstring ;
            if (inputstring.charAt(parseInt(x,10)-1) == " ")
            {
                stringcount = stringcount + 1;
            }
            else
            {
                var mySplitResult = inputstring.split(" ");
                var stringtemp = "" ;
                var w = 0;
                for (w =0 ; w < stringcount ;w++)
                {
                stringtemp = stringtemp+ " "+ mySplitResult[w];
                }
                st = stringtemp;
                lookup(mySplitResult[stringcount],inputstring);
            }
          }
            function lookup(inputString,i) {
                if(inputString.length == 0) {
                    // Hide the suggestion box.
                    $('#suggestions').hide();
                } else {
                    $.post("rpc.php", {queryString: ""+inputString+"" }, function(data){
                        if(data.length >0) {
                            $('#suggestions').show();
                            $('#autoSuggestionsList').html(data);
                        }
                    });
                }
            } // lookup

            function fill(thisValue) {
                $('#inputString').val(st.substring(1,st.length)+" "+thisValue);
                setTimeout("$('#suggestions').hide();", 200);
            }
    </script>
        <style type="text/css">
            body {
                font-family: Helvetica;
                font-size: 11px;
                color: #000;
            }
            h3 {
                margin: 0px;
                padding: 0px;
            }
            .suggestionsBox {
                position: relative;
                left: 30px;
                margin: 10px 0px 0px 0px;
                width: 200px;
                background-color: #212427;
                -moz-border-radius: 7px;
                -webkit-border-radius: 7px;
                border: 2px solid #000;
                color: #fff;
            }
            .suggestionList {
                margin: 0px;
                padding: 0px;
            }
            .suggestionList li {
                margin: 0px 0px 3px 0px;
                padding: 3px;
                cursor: pointer;
            }
            .suggestionList li:hover {
                background-color: #659CD8;
            }
        </style>
    </head>
    <body>
        <div>
            <form>
                <div>Type your county here:<br />
                    <input type="text" size="30" value="" id="inputString" onkeyup="lookup2(event,this.value);" onblur="" />
                </div>
                <div class="suggestionsBox" id="suggestions" style="display: none;">
                    <img src="upArrow.png" style="position: relative; top: -12px; left: 30px;" alt="upArrow" />
                    <div class="suggestionList" id="autoSuggestionsList">&nbsp;</div>
                </div>
            </form>
        </div>
    </body>
</html>

這是我正在使用的代碼。 通過單擊所需選項訪問自動建議框。 如何使用鍵盤的向上/向下鍵滾動選項,並使用 Enter 滾動選項 select?

看起來(因為您沒有引用真正重要的代碼)您的服務器端 ajax 端點返回一個 HTML 無序列表,並將其粘貼到建議列表 div 中。 這將是我的假設。 您的 CSS 允許 hover 偽選擇器,因此鼠標支持看起來不錯。

對於鍵盤支持,您將為keypress事件添加一個事件處理程序,可能在document上。 顯示建議框時添加處理程序,關閉時將其刪除。

事件處理程序必須跟蹤向上和向下箭頭鍵以及輸入。 您必須在當前選定的li元素上添加和刪除一個特殊的 class(或者可能是一個 id),這意味着您必須跟蹤有多少元素需要滾動,以及哪一個是當前突出顯示的元素。 因此,如果您看到向下箭頭鍵,請在當前索引中添加一個(如果您在最后一個,請忽略該鍵)。 從您剛剛離開的li元素中刪除特殊的 class 並將其添加到新元素中(顯然,在您的 CSS 中相應地設置 class 的樣式)。 當按下回車鍵時,您知道選擇了哪個元素,所以返回它,或者用它做你想做的事。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM