jQuery UI 实例 – 自动完成(Autocomplete)
根据用户输入值进行搜索和过滤,让用户快速找到并从预设值列表中选择。
如需了解更多有关 autocomplete 部件的细节,请查看 API 文档 自动完成部件(Autocomplete Widget)。
本章节使用到 search.php 下载。
默认功能
当您在输入域中输入时,自动完成(Autocomplete)部件提供相应的建议。在本实例中,提供了编程语言的建议选项,您可以输入 \”ja\” 尝试一下,可以得到 Java 或 JavaScript。
数据源是一个简单的 JavaScript 数组,使用 source 选项提供给部件。
<!doctype html> <html lang=\"en\"> <head> <meta charset=\"utf-8\"> <title>jQuery UI 自动完成(Autocomplete) - 默认功能</title> <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\"> <script src=\"//code.jquery.com/jquery-1.9.1.js\"></script> <script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script> <link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\"> <script> $(function() { var availableTags = [ \"ActionScript\", \"AppleScript\", \"Asp\", \"BASIC\", \"C\", \"C++\", \"Clojure\", \"COBOL\", \"ColdFusion\", \"Erlang\", \"Fortran\", \"Groovy\", \"Haskell\", \"Java\", \"JavaScript\", \"Lisp\", \"Perl\", \"PHP\", \"Python\", \"Ruby\", \"Scala\", \"Scheme\" ]; $( \"#tags\" ).autocomplete({ source: availableTags }); }); </script> </head> <body> <div> <label for=\"tags\">标签:</label> <input> </div> </body> </html>
包含重音
autocomplete 域使用自定义的 source 选项来匹配带有重音字符的结果项,即使文本域不包含重音字符也会匹配。但是如果您在文本域中键入了重音字符,则不会显示非重音的结果项。
尝试键入 \”Jo\”,会看到 \”John\” 和 \”Jörn\”,然后 键入 \”Jö\”,只会看到 \”Jörn\”。
<!doctype html> <html lang=\"en\"> <head> <meta charset=\"utf-8\"> <title>jQuery UI 自动完成(Autocomplete) - 包含重音</title> <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\"> <script src=\"//code.jquery.com/jquery-1.9.1.js\"></script> <script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script> <link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\"> <script> $(function() { var names = [ \"Jörn Zaefferer\", \"Scott González\", \"John Resig\" ]; var accentMap = { \"á\": \"a\", \"ö\": \"o\" }; var normalize = function( term ) { var ret = \"\"; for ( var i = 0; i < term.length; i++ ) { ret += accentMap[ term.charAt(i) ] || term.charAt(i); } return ret; }; $( \"#developer\" ).autocomplete({ source: function( request, response ) { var matcher = new RegExp( $.ui.autocomplete.escapeRegex( request.term ), \"i\" ); response( $.grep( names, function( value ) { value = value.label || value.value || value; return matcher.test( value ) || matcher.test( normalize( value ) ); }) ); } }); }); </script> </head> <body> <div> <form> <label for=\"developer\">开发人员:</label> <input> </form> </div> </body> </html>
分类
分类的搜索结果。尝试键入 \”a\” 或 \”n\”。
<!doctype html> <html lang=\"en\"> <head> <meta charset=\"utf-8\"> <title>jQuery UI 自动完成(Autocomplete) - 分类</title> <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\"> <script src=\"//code.jquery.com/jquery-1.9.1.js\"></script> <script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script> <link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\"> <style> .ui-autocomplete-category { font-weight: bold; padding: .2em .4em; margin: .8em 0 .2em; line-height: 1.5; } </style> <script> $.widget( \"custom.catcomplete\", $.ui.autocomplete, { _renderMenu: function( ul, items ) { var that = this, currentCategory = \"\"; $.each( items, function( index, item ) { if ( item.category != currentCategory ) { ul.append( \"<li class=\'ui-autocomplete-category\'>\" + item.category + \"</li>\" ); currentCategory = item.category; } that._renderItemData( ul, item ); }); } }); </script> <script> $(function() { var data = [ { label: \"anders\", category: \"\" }, { label: \"andreas\", category: \"\" }, { label: \"antal\", category: \"\" }, { label: \"annhhx10\", category: \"Products\" }, { label: \"annk K12\", category: \"Products\" }, { label: \"annttop C13\", category: \"Products\" }, { label: \"anders andersson\", category: \"People\" }, { label: \"andreas andersson\", category: \"People\" }, { label: \"andreas johnson\", category: \"People\" } ]; $( \"#search\" ).catcomplete({ delay: 0, source: data }); }); </script> </head> <body> <label for=\"search\">搜索:</label> <input> </body> </html>
组合框(Combobox)
一个由 Autocomplete 和 Button 创建的自定义部件。您可以键入一些字符,来获得基于您的输入过滤的结果,或者使用按钮从完整列表中选择。
该输入是从一个已有的 select 元素中读取,传递给带有自定义的 source 选项的 Autocomplete。
这是一个不被支持的不完美的部件。这里纯粹是为了演示 autocomplete 定制功能。如需了解更多有关该部件工作原理的细节,请点击这里查看相关的 jQuery 文章。
<!doctype html> <html lang=\"en\"> <head> <meta charset=\"utf-8\"> <title>jQuery UI 自动完成(Autocomplete) - 组合框(Combobox)</title> <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\"> <script src=\"//code.jquery.com/jquery-1.9.1.js\"></script> <script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script> <link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\"> <style> .custom-combobox { position: relative; display: inline-block; } .custom-combobox-toggle { position: absolute; top: 0; bottom: 0; margin-left: -1px; padding: 0; /* 支持: IE7 */ *height: 1.7em; *top: 0.1em; } .custom-combobox-input { margin: 0; padding: 0.3em; } </style> <script> (function( $ ) { $.widget( \"custom.combobox\", { _create: function() { this.wrapper = $( \"<span>\" ) .addClass( \"custom-combobox\" ) .insertAfter( this.element ); this.element.hide(); this._createAutocomplete(); this._createShowAllButton(); }, _createAutocomplete: function() { var selected = this.element.children( \":selected\" ), value = selected.val() ? selected.text() : \"\"; this.input = $( \"<input>\" ) .appendTo( this.wrapper ) .val( value ) .attr( \"title\", \"\" ) .addClass( \"custom-combobox-input ui-widget ui-widget-content ui-state-default ui-corner-left\" ) .autocomplete({ delay: 0, minLength: 0, source: $.proxy( this, \"_source\" ) }) .tooltip({ tooltipClass: \"ui-state-highlight\" }); this._on( this.input, { autocompleteselect: function( event, ui ) { ui.item.option.selected = true; this._trigger( \"select\", event, { item: ui.item.option }); }, autocompletechange: \"_removeIfInvalid\" }); }, _createShowAllButton: function() { var input = this.input, wasOpen = false; $( \"<a>\" ) .attr( \"tabIndex\", -1 ) .attr( \"title\", \"Show All Items\" ) .tooltip() .appendTo( this.wrapper ) .button({ icons: { primary: \"ui-icon-triangle-1-s\" }, text: false }) .removeClass( \"ui-corner-all\" ) .addClass( \"custom-combobox-toggle ui-corner-right\" ) .mousedown(function() { wasOpen = input.autocomplete( \"widget\" ).is( \":visible\" ); }) .click(function() { input.focus(); // 如果已经可见则关闭 if ( wasOpen ) { return; } // 传递空字符串作为搜索的值,显示所有的结果 input.autocomplete( \"search\", \"\" ); }); }, _source: function( request, response ) { var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), \"i\" ); response( this.element.children( \"option\" ).map(function() { var text = $( this ).text(); if ( this.value && ( !request.term || matcher.test(text) ) ) return { label: text, value: text, option: this }; }) ); }, _removeIfInvalid: function( event, ui ) { // 选择一项,不执行其他动作 if ( ui.item ) { return; } // 搜索一个匹配(不区分大小写) var value = this.input.val(), valueLowerCase = value.toLowerCase(), valid = false; this.element.children( \"option\" ).each(function() { if ( $( this ).text().toLowerCase() === valueLowerCase ) { this.selected = valid = true; return false; } }); // 找到一个匹配,不执行其他动作 if ( valid ) { return; } // 移除无效的值 this.input .val( \"\" ) .attr( \"title\", value + \" didn\'t match any item\" ) .tooltip( \"open\" ); this.element.val( \"\" ); this._delay(function() { this.input.tooltip( \"close\" ).attr( \"title\", \"\" ); }, 2500 ); this.input.data( \"ui-autocomplete\" ).term = \"\"; }, _destroy: function() { this.wrapper.remove(); this.element.show(); } }); })( jQuery ); $(function() { $( \"#combobox\" ).combobox(); $( \"#toggle\" ).click(function() { $( \"#combobox\" ).toggle(); }); }); </script> </head> <body> <div> <label>您喜欢的编程语言:</label> <select> <option value=\"\">请选择...</option> <option value=\"ActionScript\">ActionScript</option> <option value=\"AppleScript\">AppleScript</option> <option value=\"Asp\">Asp</option> <option value=\"BASIC\">BASIC</option> <option value=\"C\">C</option> <option value=\"C++\">C++</option> <option value=\"Clojure\">Clojure</option> <option value=\"COBOL\">COBOL</option> <option value=\"ColdFusion\">ColdFusion</option> <option value=\"Erlang\">Erlang</option> <option value=\"Fortran\">Fortran</option> <option value=\"Groovy\">Groovy</option> <option value=\"Haskell\">Haskell</option> <option value=\"Java\">Java</option> <option value=\"JavaScript\">JavaScript</option> <option value=\"Lisp\">Lisp</option> <option value=\"Perl\">Perl</option> <option value=\"PHP\">PHP</option> <option value=\"Python\">Python</option> <option value=\"Ruby\">Ruby</option> <option value=\"Scala\">Scala</option> <option value=\"Scheme\">Scheme</option> </select> </div> <button>显示基础的选择框</button> </body> </html>
自定义数据并显示
您可以使用自定义数据格式,并通过简单地重载默认的聚焦和选择行为来显示数据。
尝试键入 \”j\”,或者按向下箭头按键,即可得到一个项目列表。
<!doctype html> <html lang=\"en\"> <head> <meta charset=\"utf-8\"> <title>jQuery UI 自动完成(Autocomplete) - 自定义数据并显示</title> <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\"> <script src=\"//code.jquery.com/jquery-1.9.1.js\"></script> <script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script> <link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\"> <style> #project-label { display: block; font-weight: bold; margin-bottom: 1em; } #project-icon { float: left; height: 32px; width: 32px; } #project-description { margin: 0; padding: 0; } </style> <script> $(function() { var projects = [ { value: \"jquery\", label: \"jQuery\", desc: \"the write less, do more, JavaScript library\", icon: \"jquery_32x32.png\" }, { value: \"jquery-ui\", label: \"jQuery UI\", desc: \"the official user interface library for jQuery\", icon: \"jqueryui_32x32.png\" }, { value: \"sizzlejs\", label: \"Sizzle JS\", desc: \"a pure-JavaScript CSS selector engine\", icon: \"sizzlejs_32x32.png\" } ]; $( \"#project\" ).autocomplete({ minLength: 0, source: projects, focus: function( event, ui ) { $( \"#project\" ).val( ui.item.label ); return false; }, select: function( event, ui ) { $( \"#project\" ).val( ui.item.label ); $( \"#project-id\" ).val( ui.item.value ); $( \"#project-description\" ).html( ui.item.desc ); $( \"#project-icon\" ).attr( \"src\", \"images/\" + ui.item.icon ); return false; } }) .data( \"ui-autocomplete\" )._renderItem = function( ul, item ) { return $( \"<li>\" ) .append( \"<a>\" + item.label + \"<br>\" + item.desc + \"</a>\" ) .appendTo( ul ); }; }); </script> </head> <body> <div>选择一个项目(请键入 \"j\"):</div> <img src=\"images/transparent_1x1.png\" alt=\"\"> <input> <input type=\"hidden\"> <p></p> </body> </html>
多个值
用法:键入一些字符,比如 \”j\”,可以看到相关的编程语言结果。选择一个值,然后继续键入字符来添加其他的值。
本实例演示如何使用 source 选项和一些事件来实现在一个单一的文本域输入多个自动完成的值。
<!doctype html> <html lang=\"en\"> <head> <meta charset=\"utf-8\"> <title>jQuery UI 自动完成(Autocomplete) - 多个值</title> <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\"> <script src=\"//code.jquery.com/jquery-1.9.1.js\"></script> <script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script> <link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\"> <script> $(function() { var availableTags = [ \"ActionScript\", \"AppleScript\", \"Asp\", \"BASIC\", \"C\", \"C++\", \"Clojure\", \"COBOL\", \"ColdFusion\", \"Erlang\", \"Fortran\", \"Groovy\", \"Haskell\", \"Java\", \"JavaScript\", \"Lisp\", \"Perl\", \"PHP\", \"Python\", \"Ruby\", \"Scala\", \"Scheme\" ]; function split( val ) { return val.split( /,\\s*/ ); } function extractLast( term ) { return split( term ).pop(); } $( \"#tags\" ) // 当选择一个条目时不离开文本域 .bind( \"keydown\", function( event ) { if ( event.keyCode === $.ui.keyCode.TAB && $( this ).data( \"ui-autocomplete\" ).menu.active ) { event.preventDefault(); } }) .autocomplete({ minLength: 0, source: function( request, response ) { // 回到 autocomplete,但是提取最后的条目 response( $.ui.autocomplete.filter( availableTags, extractLast( request.term ) ) ); }, focus: function() { // 防止在获得焦点时插入值 return false; }, select: function( event, ui ) { var terms = split( this.value ); // 移除当前输入 terms.pop(); // 添加被选项 terms.push( ui.item.value ); // 添加占位符,在结尾添加逗号+空格 terms.push( \"\" ); this.value = terms.join( \", \" ); return false; } }); }); </script> </head> <body> <div> <label for=\"tags\">编程语言:</label> <input size=\"50\"> </div> </body> </html>
多个值,远程
用法:键入至少两个字符来获取鸟的名称。选择一个值,然后继续键入字符来添加其他的值。
本实例演示如何使用 source 选项和一些事件来实现在一个单一的文本域输入多个自动完成的值。
<!doctype html> <html lang=\"en\"> <head> <meta charset=\"utf-8\"> <title>jQuery UI 自动完成(Autocomplete) - 多个值,远程</title> <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\"> <script src=\"//code.jquery.com/jquery-1.9.1.js\"></script> <script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script> <link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\"> <style> .ui-autocomplete-loading { background: white url(\'/try/jqueryui/ui-anim_basic_16x16.gif\') right center no-repeat; } </style> <script> $(function() { function split( val ) { return val.split( /,\\s*/ ); } function extractLast( term ) { return split( term ).pop(); } $( \"#birds\" ) // 当选择一个条目时不离开文本域 .bind( \"keydown\", function( event ) { if ( event.keyCode === $.ui.keyCode.TAB && $( this ).data( \"ui-autocomplete\" ).menu.active ) { event.preventDefault(); } }) .autocomplete({ source: function( request, response ) { $.getJSON( \"search.php\", { term: extractLast( request.term ) }, response ); }, search: function() { // 自定义最小长度 var term = extractLast( this.value ); if ( term.length < 2 ) { return false; } }, focus: function() { // 防止在获得焦点时插入值 return false; }, select: function( event, ui ) { var terms = split( this.value ); // 移除当前输入 terms.pop(); // 添加被选项 terms.push( ui.item.value ); // 添加占位符,在结尾添加逗号+空格 terms.push( \"\" ); this.value = terms.join( \", \" ); return false; } }); }); </script> </head> <body> <div> <label for=\"birds\">鸟:</label> <input size=\"50\"> </div> </body> </html>
远程 JSONP 数据源
用法:键入至少两个字符来获取鸟的名称。选择一个值,然后继续键入字符来添加其他的值。
本实例演示如何使用 jsonp 来获取数据。
<!doctype html> <html lang=\"en\"> <head> <meta charset=\"utf-8\"> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"> <title>jQuery UI Autocomplete - Remote JSONP datasource</title> <link rel=\"stylesheet\" href=\"https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css\"> <style> .ui-autocomplete-loading { background: white url(\'/try/jqueryui/ui-anim_basic_16x16.gif\') right center no-repeat; } </style> <script src=\"https://code.jquery.com/jquery-1.12.4.js\"></script> <script src=\"https://code.jquery.com/ui/1.12.1/jquery-ui.js\"></script> <script> $( function() { function log( message ) { $( \"<div>\" ).text( message ).prependTo( \"#log\" ); $( \"#log\" ).scrollTop( 0 ); } $( \"#birds\" ).autocomplete({ source: function( request, response ) { $.ajax( { url: \"/try/jqueryui/search.php\", dataType: \"jsonp\", data: { term: request.term }, success: function( data ) { response( data ); } } ); }, minLength: 2, select: function( event, ui ) { log( \"Selected: \" + ui.item.value + \" aka \" + ui.item.id ); } } ); } ); </script> </head> <body> <div> <label for=\"birds\">Birds: </label> <input> </div> <div style=\"margin-top:2em; font-family:Arial\"> Result: <div style=\"height: 200px; width: 300px; overflow: auto;\"></div> </div> </body> </html>
远程数据源
当您在文本域中键入字符时,Autocomplete 部件给出建议结果。在本实例中,当您在文本域中至少键入两个字符时,将显示相关鸟的名称。
在本实例中,数据源是可返回 JSON 数据的服务器端脚本,通过一个简单的 source 选项来指定。另外,minLength 选项设置为 2,避免查询返回太多的结果,select 事件用于显示一些反馈。
<!doctype html> <html lang=\"en\"> <head> <meta charset=\"utf-8\"> <title>jQuery UI 自动完成(Autocomplete) - 远程数据源</title> <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\"> <script src=\"//code.jquery.com/jquery-1.9.1.js\"></script> <script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script> <link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\"> <style> .ui-autocomplete-loading { background: white url(\'/try/jqueryui/ui-anim_basic_16x16.gif\') right center no-repeat; } </style> <script> $(function() { function log( message ) { $( \"<div>\" ).text( message ).prependTo( \"#log\" ); $( \"#log\" ).scrollTop( 0 ); } $( \"#birds\" ).autocomplete({ source: \"search.php\", minLength: 2, select: function( event, ui ) { log( ui.item ? \"Selected: \" + ui.item.value + \" aka \" + ui.item.id : \"Nothing selected, input was \" + this.value ); } }); }); </script> </head> <body> <div> <label for=\"birds\">鸟:</label> <input> </div> <div style=\"margin-top:2em; font-family:Arial\"> 结果: <div style=\"height: 200px; width: 300px; overflow: auto;\"></div> </div> </body> </html>
远程缓存
当您在文本域中键入字符时,Autocomplete 部件给出建议结果。在本实例中,当您在文本域中至少键入两个字符时,将显示相关鸟的名称。
为了提高性能,这里添加了一些本地缓存,其他与远程数据源实例相似。在这里,缓存只保存了一个查询,并可以扩展到缓存多个值,每个条目一个值。
<!doctype html> <html lang=\"en\"> <head> <meta charset=\"utf-8\"> <title>jQuery UI 自动完成(Autocomplete) - 远程缓存</title> <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\"> <script src=\"//code.jquery.com/jquery-1.9.1.js\"></script> <script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script> <link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\"> <style> .ui-autocomplete-loading { background: white url(\'/try/jqueryui/ui-anim_basic_16x16.gif\') right center no-repeat; } </style> <script> $(function() { var cache = {}; $( \"#birds\" ).autocomplete({ minLength: 2, source: function( request, response ) { var term = request.term; if ( term in cache ) { response( cache[ term ] ); return; } $.getJSON( \"search.php\", request, function( data, status, xhr ) { cache[ term ] = data; response( data ); }); } }); }); </script> </head> <body> <div> <label for=\"birds\">鸟:</label> <input> </div> </body> </html>
可滚动的结果
当显示一个长列表的选项时,您可以简单地为 autocomplete 菜单设置 max-height 来防止菜单显示太长。尝试键入 \”a\” 或 \”s\” 来获得一个可滚动的长列表的结果。
<!doctype html> <html lang=\"en\"> <head> <meta charset=\"utf-8\"> <title>jQuery UI 自动完成(Autocomplete) - 可滚动的结果</title> <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\"> <script src=\"//code.jquery.com/jquery-1.9.1.js\"></script> <script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script> <link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\"> <style> .ui-autocomplete { max-height: 100px; overflow-y: auto; /* 防止水平滚动条 */ overflow-x: hidden; } /* IE 6 不支持 max-height * 我们使用 height 代替,但是这会强制菜单总是显示为那个高度 */ * html .ui-autocomplete { height: 100px; } </style> <script> $(function() { var availableTags = [ \"ActionScript\", \"AppleScript\", \"Asp\", \"BASIC\", \"C\", \"C++\", \"Clojure\", \"COBOL\", \"ColdFusion\", \"Erlang\", \"Fortran\", \"Groovy\", \"Haskell\", \"Java\", \"JavaScript\", \"Lisp\", \"Perl\", \"PHP\", \"Python\", \"Ruby\", \"Scala\", \"Scheme\" ]; $( \"#tags\" ).autocomplete({ source: availableTags }); }); </script> </head> <body> <div> <label for=\"tags\">标签:</label> <input> </div> </body> </html>
XML 数据
本实例演示如何获取一些 XML 数据,并使用 jQuery 的方法解析它,然后把它提供给 autocomplete 作为数据源。
本实例也可作为解析远程 XML 数据源的参考 – 解析在每次 source 回调请求时发生。
<!doctype html> <html lang=\"en\"> <head> <meta charset=\"utf-8\"> <title>jQuery UI 自动完成(Autocomplete) - XML 数据</title> <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\"> <script src=\"//code.jquery.com/jquery-1.9.1.js\"></script> <script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script> <link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\"> <style> .ui-autocomplete-loading { background: white url(\'/try/jqueryui/ui-anim_basic_16x16.gif\') right center no-repeat; } </style> <script> $(function() { function log( message ) { $( \"<div/>\" ).text( message ).prependTo( \"#log\" ); $( \"#log\" ).attr( \"scrollTop\", 0 ); } $.ajax({ url: \"/try/jqueryui/london.xmllondon.xml\", dataType: \"xml\", success: function( xmlResponse ) { var data = $( \"geoname\", xmlResponse ).map(function() { return { value: $( \"name\", this ).text() + \", \" + ( $.trim( $( \"countryName\", this ).text() ) || \"(unknown country)\" ), id: $( \"geonameId\", this ).text() }; }).get(); $( \"#birds\" ).autocomplete({ source: data, minLength: 0, select: function( event, ui ) { log( ui.item ? \"Selected: \" + ui.item.value + \", geonameId: \" + ui.item.id : \"Nothing selected, input was \" + this.value ); } }); } }); }); </script> </head> <body> <div> <label for=\"birds\">London 匹配:</label> <input> </div> <div style=\"margin-top:2em; font-family:Arial\"> 结果: <div style=\"height: 200px; width: 300px; overflow: auto;\"></div> </div> </body> </html>
点我分享笔记