АВТО-ПРЕДЛОЖЕНИЕ использование клавиатуры - PullRequest
0 голосов
/ 11 июня 2011
<!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>

Это код, который я использую.Доступ к автоматическому предложению можно получить, нажав на нужную опцию.Как прокрутить параметр с помощью клавиш вверх / вниз на клавиатуре и выбрать параметр с помощью клавиши ввода?

1 Ответ

0 голосов
/ 11 июня 2011

Похоже (потому что вы не указали действительно важный код), что ваша конечная точка ajax на стороне сервера возвращает неупорядоченный список HTML, и это вставляется в div offertionList.Это будет мое предположение.Ваш CSS позволяет использовать псевдо-селектор при наведении курсора, поэтому поддержка мыши выглядит хорошо.

Для поддержки клавиатуры вам нужно добавить обработчик события для события keypress, возможно, для document.Добавьте обработчик, когда отобразится окно с предложением, удалите его, когда он будет отклонен.

Обработчик события должен будет отслеживать клавиши со стрелками вверх и вниз, а также ввод.Вам нужно будет добавить и удалить специальный класс (или, возможно, идентификатор) для элемента li, который выбран в данный момент, что означает, что вам придется отслеживать, сколько элементов нужно прокрутить, и какой из них выделен в данный момент.один.Поэтому, если вы видите клавишу со стрелкой вниз, добавьте ее к текущему индексу (если вы используете последний, игнорируйте клавишу).Удалите специальный класс из элемента li, который вы только что оставили, и добавьте его к новому (очевидно, стилизуйте класс соответствующим образом в вашем CSS).Когда нажата клавиша ввода, вы знаете, какой элемент выбран, поэтому верните его или сделайте с ним что хотите.

...