Trong jQuery UI v1.8rc3, the autocomplete widget chấp nhận tùy chọn source có thể là chuỗi, mảng hoặc hàm gọi lại. Nếu đó là một chuỗi, tự động hoàn thành thực hiện GET trên URL đó để nhận các tùy chọn/đề xuất. Nếu một mảng, tính năng tự động hoàn thành thực hiện tìm kiếm, như bạn đã chỉ ra, cho sự hiện diện của các ký tự đã nhập ở bất kỳ vị trí nào trong các điều khoản của mảng. Biến thể cuối cùng là những gì bạn muốn - chức năng gọi lại.
Từ các tài liệu autocomplete:
Các biến thể thứ ba, gọi lại, cung cấp sự linh hoạt nhất, và có thể được sử dụng để kết nối bất kỳ nguồn dữ liệu để Autocomplete. Cuộc gọi lại nhận được hai đối số:
• Một đối tượng request
, với một thuộc tính duy nhất được gọi là "thuật ngữ", đề cập đến giá trị hiện tại trong nhập văn bản.Ví dụ: khi người dùng nhập "new yo" vào trường thành phố được đặt thành tự động hoàn thành, request.term
sẽ giữ "yo mới".
• Chức năng response
, một cuộc gọi lại dự kiến một đối số duy nhất chứa dữ liệu đề xuất cho người dùng. Dữ liệu này nên được lọc dựa trên thuật ngữ được cung cấp, và phải là một mảng trong định dạng được phép cho dữ liệu cục bộ đơn giản: String-Array hoặc Object-Array với nhãn/giá trị/cả hai thuộc tính.
Ví dụ mã:
var wordlist= [ "about", "above", "across", "after", "against",
"along", "among", "around", "at", "before",
"behind", "below", "beneath", "beside", "between",
"beyond", "but", "by", "despite", "down", "during",
"except", "for", "from", "in", "inside", "into",
"like", "near", "of", "off", "on", "onto", "out",
"outside", "over", "past", "since", "through",
"throughout", "till", "to", "toward", "under",
"underneath", "until", "up", "upon", "with",
"within", "without"] ;
$("#input1").autocomplete({
// The source option can be an array of terms. In this case, if
// the typed characters appear in any position in a term, then the
// term is included in the autocomplete list.
// The source option can also be a function that performs the search,
// and calls a response function with the matched entries.
source: function(req, responseFn) {
var re = $.ui.autocomplete.escapeRegex(req.term);
var matcher = new RegExp("^" + re, "i");
var a = $.grep(wordlist, function(item,index){
return matcher.test(item);
});
responseFn(a);
}
});
Một vài điểm chính:
- cuộc gọi đến
$.ui.autocomplete.escapeRegex(req.term);
Đó thoát các thuật ngữ tìm kiếm để bất kỳ điều khoản regex-ý nghĩa trong văn bản đánh máy bởi người dùng được coi là văn bản thuần túy. Ví dụ: dấu chấm (.) Có ý nghĩa để regex. Tôi đã học về hàm escapeRegex này bằng cách đọc mã nguồn tự động hoàn thành.
- dòng với
new Regexp()
. Nó chỉ định một regexp bắt đầu bằng^(Circumflex), ngụ ý, nó sẽ chỉ khớp khi các ký tự đã gõ xuất hiện ở đầu của từ trong mảng, đó là những gì bạn muốn. Nó cũng sử dụng tùy chọn "i" có nghĩa là một trận đấu không phân biệt chữ hoa chữ thường.
- tiện ích
$.grep()
chỉ gọi hàm được cung cấp trên mỗi cụm từ trong mảng được cung cấp. Hàm trong trường hợp này chỉ đơn giản là sử dụng regexp để xem cụm từ trong mảng có phù hợp với những gì được nhập hay không.
- cuối cùng, responseFn() được gọi với kết quả tìm kiếm.
bản demo làm việc: http://jsbin.com/ezifi
những gì nó trông giống như:
Chỉ cần một lưu ý: Tôi tìm thấy tài liệu trên autocomplete là chưa trưởng thành khá vào thời điểm này. Tôi đã không tìm thấy ví dụ mà đã làm điều này, và tôi không thể tìm thấy tài liệu làm việc trên đó các tập tin .css là cần thiết hoặc các lớp .css sẽ được sử dụng. Tôi đã học được tất cả điều này từ việc kiểm tra mã.
Xem thêm, how can I custom-format the Autocomplete plug-in results?
tay sai có một giải pháp cho gmail như tìm kiếm http: // stackoverflow.com/questions/2382497/jquery-autocomplete-plug-in-search-cấu hình/2405646 # 2405646 –