2014-03-31 170 views
1

我已经为jQuery自动完成做了下面的代码。jQuery自动完成代码自定义

下面的第一部分是一个代码,以便当我点击ID为#project的输入时获得建议。我也有第二部分代码限制了建议的数量。我如何合并它们以使这两个功能都可以工作。我已经把第二部分放在第一部分,但第一部分停止工作。

$(function() { 
var projects = [ 
    { 
     //your each suggestion link here 
     value: "www.facebook.com", 
     label: "jQuery", 
     desc: "the write less, do more, JavaScript library" 
     //your alternate texts here 
    }, 
    { 
     value: "jquery-ui 1 ", 
     label: "jQuery UI 1", 
     desc: "the official, user ,interface, library for jQuery"   
    }, 
    { 
     value: "jqueryme 2", 
     label: "jQueryme 2", 
     desc: "the negative, user interface, river, Maniram,for jQuery"   
    },  
    { 
     value: "jqueryme 3", 
     label: "jQueryme 3" , 
     desc: "the negative, user interface, river, Maniram,for jQuery"   
    },  
    { 
     value: "jqueryme 4", 
     label: "jQueryme 4", 
     desc: "the negative, user interface, river, Maniram,for jQuery"   
    },  
    { 
     value: "jqueryme 5", 
     label: "jQueryme 5", 
     desc: "the negative, user interface, river, Maniram,for jQuery"   
    }, 
    { 
     value: "sizzlejs", 
     label: "Sizzle JS", 
     desc: "a pure-JavaScript CSS selector engine"   
    } 
]; 

function lightwell(request, response) { 

function hasMatch(s) { 
     return s.toLowerCase().indexOf(request.term.toLowerCase())!==-1; 
    } 
    var i, l, obj, matches = []; 

    if (request.term==="") { 
     response([]); 
     return; 
    } 

    for (i = 0, l = projects.length; i<l; i++) { 
     obj = projects[i]; 
     if (hasMatch(obj.label) || hasMatch(obj.desc)) { 
      matches.push(obj); 
     } 
    } 
    response(matches);  

} 

$("#project").autocomplete({ 
    //number of characters to be typed for user here 
    minLength: 3, 
    source: lightwell, 
    focus: function(event, ui) { 
     $("#project").val(ui.item.label); 
     return false; 
    }, 
    select: function(event, ui) { 
     $("#project").val(ui.item.label);   
     window.open(ui.item.value,'_self');    
     return false; 
    } 
}) 

.data("ui-autocomplete")._renderItem = function(ul, item) { 
    return $("<li>") 
     .append("<a>" + item.label) 
     .appendTo(ul); 
}; 

}); 

第二部分展示的2建议极限,当我插入上面这段代码中,只有两个建议工作,但与“递减”等功能亘古不变的工作。

$("#project").autocomplete({ 
source: function(request, response) { 
    var results = $.ui.autocomplete.filter(projects, request.term); 

    response(results.slice(0, 2)); 
} 
}); 

我该如何合并,这样我才能完成工作?请帮助

回答

0

只需更改您的lightwell函数,即可添加最终的slice

代码:

function lightwell(request, response) { 

    function hasMatch(s) { 
     return s.toLowerCase().indexOf(request.term.toLowerCase()) !== -1; 
    } 
    var i, l, obj, matches = []; 

    if (request.term === "") { 
     response([]); 
     return; 
    } 

    for (i = 0, l = projects.length; i < l; i++) { 
     obj = projects[i]; 
     if (hasMatch(obj.label) || hasMatch(obj.desc)) { 
      matches.push(obj); 
     } 
    } 
    response(matches.slice(0, 2)); 
} 

演示:http://jsfiddle.net/IrvinDominin/VYy7U/

+0

哇!!!!!非常感谢 。正在转向解决这个问题。非常感谢。 – Razoowp

+0

@ user3475399欢迎你!如果解决了考虑接受使用标记的答案 –