jQuery UI Autocomplete 体验分享_jquery
jQuery UI Autocomplete主要支持字符串Array、JSON两种数据格式。
普通的Array格式没有什么特殊的,如下:
对于JSON格式的Array,则要求有:label、value属性,如下:
其中label属性用于显示在autocomplete弹出菜单,而value属性则是选中后给文本框赋的值。
如果没有指定其中一个属性则用另一个属性替代(即value和label值一样),如下:
[{label: "cnblogs"}, {label: "囧月"}]
[{value: "cnblogs"}, {value: "囧月"}]
如果label和value都没有指定,则无法用于autocomplete的提示。
另外需要注意,对于从服务器端输出的JSON的key必须用双引号,如下:
否则可能会出现parsererror错误。
主要的参数
jQuery UI Autocomplete常用的参数有:
Source:用于指定数据来源,类型为String、Array、Function
String:用于ajax请求的服务器端地址,返回Array/JSON格式
Array:即字符串数组 或 JSON数组
Function(request, response):通过request.term获得输入的值,response([Array])来呈现数据;(JSONP是这种方式)
minLength:当输入框内字符串长度达到minLength时,激活Autocomplete
autoFocus:当Autocomplete选择菜单弹出时,自动选中第一个
delay:即延迟多少毫秒激活Autocomplete
其他不常用的就不罗列了。
使用方法
假如页面上有以下输入框:
AJAX请求
通过指定source为服务器端的地址来实现,如下:
$("#autocomp").autocomplete({
source: "remote.ashx",
minLength: 2
});
然后在服务器端接收,并输出相应结果,注意默认传递的参数名称为term:
public void ProcessRequest(HttpContext context)
{
// 查询的参数名称默认为term
string query = context.Request.QueryString["term"];
context.Response.ContentType = "text/javascript";
//输出字符串数组 或者 JSON 数组
context.Response.Write("[{\"label\":\"博客园\",\"value\":\"cnblogs\"},{\"label\":\"囧月\",\"value\":\"囧月\"}]");
}
本地Array/JSON数组
// 本地字符串数组
var availableTags = [
"C#",
"C++",
"Java",
"JavaScript",
"ASP",
"ASP.NET",
"JSP",
"PHP",
"Python",
"Ruby"
];
$("#local1").autocomplete({
source: availableTags
});
// 本地json数组
var availableTagsJSON = [
{ label: "C# Language", value: "C#" },
{ label: "C++ Language", value: "C++" },
{ label: "Java Language", value: "Java" },
{ label: "JavaScript Language", value: "JavaScript" },
{ label: "ASP.NET", value: "ASP.NET" },
{ label: "JSP", value: "JSP" },
{ label: "PHP", value: "PHP" },
{ label: "Python", value: "Python" },
{ label: "Ruby", value: "Ruby" }
];
$("#local2").autocomplete({
source: availableTagsJSON
});
Callback Function方式
通过指定source为自定义函数来实现自定义数据的获取,函数主要有2个参数(request,response),分别用于获取输入的值、呈现结果
本地Array方式获取数据(模仿新浪微博的登录)
var hosts = ["gmail.com", "live.com", "hotmail.com", "yahoo.com", "cnblogs.com", "火星.com", "囧月.com"];
$("#email1").autocomplete({
autoFocus: true,
source: function(request, response) {
var term = request.term, //request.term为输入的字符串
ix = term.indexOf("@"),
name = term, // 用户名
host = "", // 域名
result = []; // 结果
result.push(term);
// result.push({ label: term, value: term }); // json格式
if (ix > -1) {
name = term.slice(0, ix);
host = term.slice(ix + 1);
}
if (name) {
var findedHosts = (host ? $.grep(hosts, function(value) {
return value.indexOf(host) > -1;
}) : hosts),
findedResults = $.map(findedHosts, function(value) {
return name + "@" + value; //返回字符串格式
// return { label: name + " @ " + value, value: name + "@" + value }; // json格式
});
result = result.concat($.makeArray(findedResults));
}
response(result);//呈现结果
}
});
JSONP方式获取数据
直接从官方DEMO拿来的,通过发送ajax请求到远程服务器,然后对返回结果进行处理,最后通过response来呈现:
$("#jsonp").autocomplete({
source: function(request, response) {
$.ajax({
url: "http://ws.geonames.org/searchJSON",
dataType: "jsonp",
data: {
featureClass: "P",
style: "full",
maxRows: 12,
name_startsWith: request.term
},
success: function(data) {
response($.map(data.geonames, function(item) {
return {
label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
value: item.name
}
}));
}
});
},
minLength: 2
});
主要的事件
jQuery UI Autocomplete有一些事件,可用于在一些阶段进行额外的控制:
create(event, ui):Autocomplete创建时,可以在此事件中,对外观进行一些控制
search(event, ui): 在开始请求之前,可以在此事件中返回false来取消请求
open(event, ui):Autocomplete的结果列表弹出时
focus(event, ui):Autocomplete的结果列表任意一项获得焦点时,ui.item为获得焦点的项
select(event, ui):Autocomplete的结果列表任意一项选中时,ui.item为选中的项
close(event, ui):Autocomplete的结果列表关闭时
change(event, ui):当值改变时,ui.item为选中的项
这些事件的ui参数的item属性(如果有的话)默认有label和value属性,不管在source中设置的数据是Array还是JSON数组,如下3种:
["cnblogs","博客园","囧月"]
[{label: "博客园", value: "cnblogs"}, {label: "囧月", value: "囧月"}]
[{label: "博客园", value: "cnblogs", id: "1"}, {label: "囧月", value: "囧月", id: "2"}]
假如是第三种的话,还可以得到ui.item.id的值。
这些事件可以通过2种方式来绑定,如下:
// 在参数中
$("#autocomp").autocomplete({
source: availableTags
, select: function(e, ui) {
alert(ui.item.value)
}
});
// 通过bind来绑定
$("#autocomp").bind("autocompleteselect", function(e, ui) {
alert(ui.item.value);
});
通过bind来绑定的方式使用的事件名称为"autocomplete"+事件名称,如"select"就是"autocompleteselect"。
多个值的Autocomplete
一般情况下,输入框的autocomplete仅需要一个值就可以(如:javascript);假如需要多个值(如:javascript,c#,asp.net),则需要绑定一些事件来进行额外处理:
在focus事件中返回false,避免输入框的值被autocomplete的单个值取代
在select事件中组合多个值
在元素的keydown事件做一些处理,理由同1
使用callback function方式的source,来获取最后输入的值,并呈现结果
还是直接拿官方DEMO的代码:
// 按逗号分隔多个值
function split(val) {
return val.split(/,\s*/);
}
// 提取输入的最后一个值
function extractLast(term) {
return split(term).pop();
}
// 按Tab键时,取消为输入框设置value
function keyDown(event) {
if (event.keyCode === $.ui.keyCode.TAB &&
$(this).data("autocomplete").menu.active) {
event.preventDefault();
}
}
var options = {
// 获得焦点
focus: function() {
// prevent value inserted on focus
return false;
},
// 从autocomplete弹出菜单选择一个值时,加到输入框最后,并以逗号分隔
select: function(event, ui) {
var terms = split(this.value);
// remove the current input
terms.pop();
// add the selected item
terms.push(ui.item.value);
// add placeholder to get the comma-and-space at the end
terms.push("");
this.value = terms.join(", ");
return false;
}
};
// 多个值,本地数组
$("#local3").bind("keydown", keyDown)
.autocomplete($.extend(options, {
minLength: 2,
source: function(request, response) {
// delegate back to autocomplete, but extract the last term
response($.ui.autocomplete.filter(
availableTags, extractLast(request.term)));
}
}));
// 多个值,ajax返回json
$("#ajax3").bind("keydown", keyDown)
.autocomplete($.extend(options, {
minLength: 2,
source: function(request, response) {
$.getJSON("remoteJSON.ashx", {
term: extractLast(request.term)
}, response);
}
}));
结尾
最后,放上代码:点击下载。
更多的资料请看jQuery UI Autocomplete官方演示:http://jqueryui.com/demos/autocomplete

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Dalam Elden's Ring, halaman UI permainan ini akan disembunyikan secara automatik selepas tempoh masa Ramai pemain tidak tahu bagaimana UI sentiasa dipaparkan Pemain boleh memilih konfigurasi paparan tolok dalam paparan dan konfigurasi bunyi pada. Mengapa UI Elden Ring terus dipaparkan? 1. Pertama, selepas kita memasuki menu utama, klik [Konfigurasi Sistem]. 2. Dalam antara muka [Display and Sound Configuration], pilih konfigurasi paparan meter. 3. Klik Dayakan untuk melengkapkan.

Vue ialah rangka kerja JavaScript popular yang menggunakan pendekatan berasaskan komponen untuk membina aplikasi web. Dalam ekosistem Vue, terdapat banyak perpustakaan komponen UI yang boleh membantu anda membina antara muka yang cantik dengan cepat dan menyediakan fungsi yang kaya dan kesan interaktif. Dalam artikel ini, kami akan memperkenalkan beberapa pustaka komponen VueUI biasa. ElementUIElementUI ialah perpustakaan komponen Vue yang dibangunkan oleh pasukan Ele.me Ia menyediakan pembangun dengan satu set yang elegan.

Bagi AI, "bermain dengan telefon mudah alih" bukanlah tugas yang mudah Hanya mengenal pasti pelbagai antara muka pengguna (UI) adalah masalah besar: bukan sahaja jenis setiap komponen mesti dikenal pasti, tetapi juga simbol yang digunakan, kedudukan untuk menentukan fungsi. daripada komponen tersebut. Memahami UI peranti mudah alih boleh membantu merealisasikan pelbagai tugas interaksi manusia-komputer, seperti automasi UI. Kerja sebelumnya untuk memodelkan UI mudah alih biasanya bergantung pada maklumat hierarki paparan skrin, secara langsung menggunakan data struktur UI, dan dengan itu memintas masalah mengenal pasti komponen bermula dari piksel skrin. Walau bagaimanapun, hierarki paparan tidak tersedia dalam semua senario Kaedah ini biasanya menghasilkan hasil yang salah disebabkan penerangan objek yang hilang atau maklumat struktur yang salah letak, jadi walaupun anda menggunakan.

Rangka kerja UI mudah alih jQuery ialah alat untuk membangunkan aplikasi mudah alih Ia menyediakan komponen antara muka yang kaya dan kesan interaktif, membolehkan pembangun membina antara muka pengguna mudah alih yang sangat baik. Dalam artikel ini, kami akan meneroka beberapa rangka kerja UI mudah alih jQuery yang paling popular dan menyediakan contoh kod khusus untuk membantu pembaca memahami dan menggunakan rangka kerja ini dengan lebih baik. 1.jQueryMobiljQueryMobile ialah rangka kerja UI mudah alih sumber terbuka berdasarkan HTML5 dan CSS3.

UI ialah singkatan "Antara Muka Pengguna", yang digunakan terutamanya untuk menerangkan interaksi manusia-komputer, logik operasi dan antara muka yang cantik bagi perisian. Tujuan reka bentuk UI adalah untuk menjadikan operasi perisian lebih mudah dan selesa, serta mencerminkan sepenuhnya kedudukan dan ciri-cirinya. Reka bentuk UI biasa dibahagikan kepada UI fizikal dan UI maya, antaranya UI maya digunakan secara meluas dalam medan Internet.

Beberapa hari lalu, Google secara rasmi menolak kemas kini Android 15 Beta 4 kepada pengguna telefon pintar dan tablet Pixel yang layak Ini menandakan bahawa sistem pengendalian Android 15 telah memasuki tahap stabil platform, menunjukkan bahawa versi stabilnya akan dikeluarkan secara rasmi dengan pengguna global dalam. beberapa hari akan datang. Pada masa yang sama, perkembangan ini turut menyuntik tenaga baharu ke dalam siri peranti Galaxy Samsung Electronics untuk mempercepatkan proses pembangunan versi OneUI7.0nya. 1.[Android15Beta4 mempromosikan binaan stabil Samsung OneUI7.0](https://www.cnbeta.com/articles/tech/1427022.htm) Dengan Android15Bet

Perbezaan antara reka bentuk ux dan ui: 1. UX menjadikan antara muka lebih mudah untuk digunakan, dan UI menjadikan antara muka lebih kelihatan 2. UX membolehkan pengguna mencapai matlamat mereka, dan UI menjadikan antara muka meningkatkan rasa jenama; matlamat teras membimbing pengguna untuk menyelesaikan tugas, UI tidak 4. Penyerahan UI dan UX adalah berbeza Output UX termasuk laporan pengalaman UX, definisi fungsi, perancangan fungsi, kemajuan projek, dll., manakala output UI termasuk. visual dan interaksi, reka bentuk visual, reka bentuk jenama, reka bentuk gerakan, dan reka bentuk komponen dan bahasa reka bentuk, dsb.

UI, nama penuh antara muka pengguna, merujuk kepada reka bentuk interaksi manusia-komputer, logik operasi dan antara muka yang cantik dalam perisian. Ia dibahagikan kepada UI fizikal dan UI maya, antaranya UI maya digunakan secara meluas dalam Internet mudah alih. Reka bentuk UI yang baik bukan sahaja menjadikan perisian kelihatan menarik, tetapi yang lebih penting, menjadikan operasi perisian selesa dan mudah, mencerminkan sepenuhnya kedudukan dan ciri perisian.
