Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ajax下拉菜单的键盘导航_Php_Html_Ajax - Fatal编程技术网

Php ajax下拉菜单的键盘导航

Php ajax下拉菜单的键盘导航,php,html,ajax,Php,Html,Ajax,我使用下面的代码作为Ajax下拉列表的建议(一些类似于google的建议)。它工作得很好 [来源]:此代码的 html代码 身体{ 字体:11px arial; } .建议链接{ 背景色:#FFFFFF; 填充:2px6px 2px6px; } .建议链接{ 背景色:#3366CC; 填充:2px6px 2px6px; } #搜索建议{ 位置:绝对位置; 背景色:#FFFFFF; 文本对齐:左对齐; 边框:1px实心#000000; } javascript代码 //获取特定于浏览器的Xml

我使用下面的代码作为Ajax下拉列表的建议(一些类似于google的建议)。它工作得很好

[来源]:此代码的

html代码


身体{
字体:11px arial;
}
.建议链接{
背景色:#FFFFFF;
填充:2px6px 2px6px;
}
.建议链接{
背景色:#3366CC;
填充:2px6px 2px6px;
}
#搜索建议{
位置:绝对位置;
背景色:#FFFFFF;
文本对齐:左对齐;
边框:1px实心#000000;
}
javascript代码

//获取特定于浏览器的XmlHttpRequest对象
函数getXmlHttpRequestObject(){
if(window.XMLHttpRequest){
//IE7+、Firefox、Chrome、Opera、Safari的代码
返回新的XMLHttpRequest();
}else if(window.ActiveXObject){
//IE6、IE5的代码
返回新的ActiveXObject(“Microsoft.XMLHTTP”);
}否则{
提醒(“是时候升级你的浏览器了。你不这么认为吗?”);
}
}
//我们的XmlHttpRequest对象用于获取自动建议
var searchReq=getXmlHttpRequestObject();
//从搜索文本框上的keyup调用。
//启动AJAX请求。
函数searchSuggest(){
if(searchReq.readyState==4 | | searchReq.readyState==0){
var str=escape(document.getElementById('txtSearch').value);
searchReq.open(“GET”,'searchSuggest.php?search='+str,true);
searchReq.onreadystatechange=handleSearchSuggest;
searchReq.send(空);
}
}
//在返回AJAX响应时调用。
函数handleSearchSuggest(){
如果(searchReq.readyState==4){
var ss=document.getElementById('search\u suggest')
ss.innerHTML='';
var str=searchReq.responseText.split(“\n”);
对于(i=0;i
现在我想知道我是否可以在下拉列表中导航键的帮助下。i、 e

使用向下箭头键打开下拉列表。打开下拉列表后,用户可以使用向上箭头、向下箭头、主页、结束、向上翻页、向下翻页键在下拉项目之间导航,然后使用Enter键选择项目。要关闭列表而不更改值,用户可以按Esc键

很高兴拥有上述所有功能。-只有在可行的情况下

但是需要使用向上箭头和向下箭头进行导航。-这两个需要帮助吗


提前谢谢

您的意思是文本输入下出现的自动完成选项吗?在这种情况下,您需要为keypress设置一个选项,如果它是向下箭头,那么您可以对$(this)元素执行与当前相同的操作“mouse\u out”,对它下面的元素执行“mouse\u over”。对于向上箭头,与上面的箭头相同

首先,您需要每个div上的id,并将它们按顺序排列。然后添加按键功能

 for(i=0; i < str.length - 1; i++) {
   //Build our element string.  This is cleaner using the DOM, but
   //IE doesn't support dynamically added attributes.
   var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
   suggest += 'onmouseout="javascript:suggestOut(this);" ';
                    suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';

                    suggest += 'onkeypress="javascript:keyPressFunc(k,this);' //THIS IS NEW
                    suggest += 'id="item"+i'; //THIS IS THE NEW LINE TO ADD

   suggest += 'class="suggest_link">' + str[i] + '</div>';
   ss.innerHTML += s
}

function keyPressFunc(k, comesFrom)
{
    keyIn = k.keyCode;
    suggestOut(this);
    getsFocusId = "item" + 39-keyIn  //38 is up arrow, 40 is down
    suggestOver(document.getElementById(getFocusId));
}
//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {

        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
 } else if(window.ActiveXObject) {
           // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
 } else {
  alert("It's about time to upgrade your browser. don't you think so?");
 }
}

//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('txtSearch').value);
  searchReq.open("GET", 'searchSuggest.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++) {
   //Build our element string.  This is cleaner using the DOM, but
   //IE doesn't support dynamically added attributes.
   var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
   suggest += 'onmouseout="javascript:suggestOut(this);" ';
                        suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';
   suggest += 'class="suggest_link">' + str[i] + '</div>';
   ss.innerHTML += suggest;
  }
 }
}

//Mouse over function
function suggestOver(div_value) {
 div_value.className = 'suggest_link_over';
}
//Mouse out function
function suggestOut(div_value) {
 div_value.className = 'suggest_link';
}

//Click function
function setSearch(value) {
 document.getElementById('txtSearch').value = value;
 document.getElementById('search_suggest').innerHTML = '';
}
 for(i=0; i < str.length - 1; i++) {
   //Build our element string.  This is cleaner using the DOM, but
   //IE doesn't support dynamically added attributes.
   var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
   suggest += 'onmouseout="javascript:suggestOut(this);" ';
                    suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';

                    suggest += 'onkeypress="javascript:keyPressFunc(k,this);' //THIS IS NEW
                    suggest += 'id="item"+i'; //THIS IS THE NEW LINE TO ADD

   suggest += 'class="suggest_link">' + str[i] + '</div>';
   ss.innerHTML += s
}

function keyPressFunc(k, comesFrom)
{
    keyIn = k.keyCode;
    suggestOut(this);
    getsFocusId = "item" + 39-keyIn  //38 is up arrow, 40 is down
    suggestOver(document.getElementById(getFocusId));
}
$(".suggest_link").keypress(function(k) {.....