Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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
jQuery-如何使用Enter键在列表中打开URL_Jquery - Fatal编程技术网

jQuery-如何使用Enter键在列表中打开URL

jQuery-如何使用Enter键在列表中打开URL,jquery,Jquery,我有一个jQuery“自动建议”类型的搜索框。它使用Href填充搜索结果列表,以便用户可以单击列表中的某个项目转到相关页面。用户还可以使用箭头键滚动列表进行选择。我现在要做的是允许用户按Enter键转到他们选择的URL。我使用了Enter键,但我不确定应该如何构造列表或从列表中提取Href等。。或者我应该有第二个隐藏列表,其中只包含纯URL 以下是到目前为止的代码,相关部分标记为####: 风险值结果列表=“”; 函数回调(结果){ 结果_list.show(); var项目=[]; $。每个

我有一个jQuery“自动建议”类型的搜索框。它使用Href填充搜索结果列表,以便用户可以单击列表中的某个项目转到相关页面。用户还可以使用箭头键滚动列表进行选择。我现在要做的是允许用户按Enter键转到他们选择的URL。我使用了Enter键,但我不确定应该如何构造列表或从列表中提取Href等。。或者我应该有第二个隐藏列表,其中只包含纯URL

以下是到目前为止的代码,相关部分标记为####:


风险值结果列表=“”;
函数回调(结果){
结果_list.show();
var项目=[];
$。每个(结果、功能(i、项目){
项目。推送(“
  • ”); }); 结果_list.append(items.join(“”)); } 选择的风险值列表; var li=''; $('.search')。每个(函数(){ $(此).keyup(函数(e){ var search_type=$(this.attr('name'); 结果列表=$(“#”+搜索类型+“#列表”); li=结果_list.children(); var key_code=e.keyCode; 如果($.inArray(键代码[37,38,39,40])>-1){ 如果(e.which==40){ 如果(选择列表){ list_selected.removeClass('selected'); 下一步=列表_选中。下一步(); 如果(next.length>0){ list_selected=next.addClass('selected'); }否则{ list_selected=li.eq(0).addClass('selected'); } }否则{ list_selected=li.eq(0).addClass('selected'); } }否则如果(例如,哪个===38){ 如果(选择列表){ list_selected.removeClass('selected'); next=list_selected.prev(); 如果(next.length>0){ list_selected=next.addClass('selected'); }否则{ list_selected=li.last().addClass('selected'); } }否则{ list_selected=li.last().addClass('selected'); } } }否则{ //####相关章节### 如果(key_code==13){//在这里做什么?? window.location=list_selected.html(); // ### }否则{ 结果_list.empty(); 变量参数={ “搜索类型”:搜索类型, 'q':$(this.val() }; if($(this.val()){ ajaxThis(“搜索框”、参数、回调); } } } }); });
    <script>
    
    var results_list = '';
    
    function callback(result) {
        results_list.show();
        var items = [];
        $.each(result, function (i, item) {
            items.push("<li><a href='/view/raw/" + item.collection + "/" + item.classname + "/" + item._id + "'>" + item.Title + "</a></li>");
        });
        results_list.append(items.join(''));
    }
    
    var list_selected;
    var li = '';
    
    $('.search').each(function () {
        $(this).keyup(function (e) {
            var search_type = $(this).attr('name');
            results_list = $('#' + search_type + '_list');
            li = results_list.children();
            var key_code = e.keyCode;
            if ($.inArray(key_code, [37, 38, 39, 40]) > -1) {
                if (e.which === 40) {
                    if (list_selected) {
                        list_selected.removeClass('selected');
                        next = list_selected.next();
                        if (next.length > 0) {
                            list_selected = next.addClass('selected');
                        } else {
                            list_selected = li.eq(0).addClass('selected');
                        }
                    } else {
                        list_selected = li.eq(0).addClass('selected');
                    }
                } else if (e.which === 38) {
                    if (list_selected) {
                        list_selected.removeClass('selected');
                        next = list_selected.prev();
                        if (next.length > 0) {
                            list_selected = next.addClass('selected');
                        } else {
                            list_selected = li.last().addClass('selected');
                        }
                    } else {
                        list_selected = li.last().addClass('selected');
                    }
                }
            } else {
                // ### relevant section ###
                if (key_code == 13) {  // what to do here??
                    window.location = list_selected.html();
                // ###
                } else {
                    results_list.empty();
                    var params = {
                        'search_type': search_type,
                            'q': $(this).val()
                    };
                    if ($(this).val()) {
                        ajaxThis("search_box", params, callback);
                    }
                }
            }
        });
    });
    
    </script>
    
    if ( key_code == 13 && $('.selected').length > 0 ) { // Make sure there's a selection
      var selected_item = $('li.selected:first a'); // select li and a
    
       // Two options:
       // A.) Make sure the li a's href is an absolute path so you can do:
        window.location = selected_item.attr('href');
       // B.) Keep the relative href, trigger a click on the element:
        $(selected_item).trigger('click');
     }