首页 > 语言 > JavaScript > 正文

jquery UI实现autocomplete在获取焦点时得到显示列表功能示例

2024-05-06 15:38:28
字体:
来源:转载
供稿:网友

本文实例讲述了jquery UI实现autocomplete在获取焦点时得到显示列表功能。分享给大家供大家参考,具体如下:

在做项目的时候,客户有这样的需求,将以前输入过的内容,在某个文本框上用列表的形式提示出来,可以选择,换言之,就如同我们用谷歌搜索,或者百度搜索一样,输入一些关键词,会自动提示,这个功能就叫autocomplete. 当然在 jquery  UI  下有 插件,具体下载的地方,搜索就知道了。重点是,我现在的用法,是需要在文本框获取焦点的时候,就弹出待选择的列表。而传统的是必须在输入文字之后才出现。经过发现,jquery ui autocomplete 用如下方法可以实现

<!doctype html><html lang="en"><head> <meta charset="utf-8"> <title>jQuery UI Autocomplete - Categories</title> <link rel="stylesheet" href="../../themes/base/jquery.ui.all.css" rel="external nofollow" > <script src="../../jquery-1.9.1.js"></script> <script src="../../ui/jquery.ui.core.js"></script> <script src="../../ui/jquery.ui.widget.js"></script> <script src="../../ui/jquery.ui.position.js"></script> <script src="../../ui/jquery.ui.menu.js"></script> <script src="../../ui/jquery.ui.autocomplete.js"></script> <link rel="stylesheet" href="../demos.css" rel="external nofollow" > <style> .ui-autocomplete-category {  font-weight: bold;  padding: .2em .4em;  margin: .8em 0 .2em;  line-height: 1.5; } </style> <script>  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" }  ];  function dynamicAutocomplete(){   $("#search").autocomplete({    delay:200,    autoFocus: false,   source: data,   minLength: 0,   }).focus(function () {    $(this).autocomplete("search");   });  } </script></head><body><button onclick="dynamicAutocomplete()">autocomplete</button> <br /><label for="search">Search: </label><input id="search"><div class="demo-description"><p>A categorized search result. Try typing "a" or "n".</p></div></body></html>

代码来源于官网例子,稍稍改动了一下,但貌似在IE 下有点问题,选择某个选项之后,这个列表框不消失,还一直存在,比较郁闷。

在google 上搜索了一下,发现了一篇文章,也讲到了这个问题。后来用如下方法解决,不过是失去焦点的方式做的。

function dynamicAutocomplete(){   $("#search").autocomplete({   minLength: 0,   source: data,    focus :function () {     return false;    },    select: function(event, ui){    $this = $(this);   setTimeout(function () {    $this.blur();    }, 1);   }   }).focus(function(){     $(this).autocomplete("search");     return false;   }  ); };            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选