JQuery自动完成文本框

4
当我点击文本框而不输入任何内容时,如何使用JQuery实现自动完成?String[]将返回一个预先构建的列表。

1
这是否意味着您已经可以使用自动完成功能进行输入了?如果还没有,那么这个问题似乎有些奇怪,因为输入是典型自动完成功能的重要组成部分。 - John Fisher
听起来你可能正在寻找一个组合框,你可以从列表中选择或添加新项目?针对约翰的观点,自动完成的本质是完成部分存在的内容。 - Scott McMillin
嗨John,我已经让自动完成功能正常工作了。 - Greens
3个回答

2
<pre>'<input type="text"/><div class=displayPanel></div>'</pre>

$jq('input').bind('click', function() {

$jq('.displayPanel').slideDown('slow', function() {

这里的“this”是指HTML元素,这个语句将文本数组赋给了该元素。

});

});

我不知道这是否符合您的要求。


2
自动完成插件(http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/)是您的最佳选择,特别是在 AJAX 应用程序中,因为它可以实时向您的服务器发送请求并获取可能的列表。
示例用法:
$("#sometextbox").autocomplete("search.php", {
    width: 260,
    selectFirst: false
});

然后search.php可能会返回:
Great Bittern|Botaurus stellaris
Little Bittern|Ixobrychus minutus
American Bittern|Botaurus lentiginosus

您可以动态生成输出,因为插件通过查询字符串中的“q”参数传递输入的文本。
关于在没有输入任何内容的情况下触发自动完成,该插件不支持,但是可以以一种hackish方式实现:
插件钩子附加到框的keydown(或keypress)事件上,如非最小化代码的第92行所示:
$input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete",...)

因此,您可以通过执行类似以下操作来强制运行自动完成器:
$("#autocompletedInput").click(function() {
    $(this).trigger(($.browser.opera ? "keypress" : "keydown") + ".autocomplete");
}

应该触发事件。您可能需要将随机字符键代码传递到触发器中,以便它不会想知道发生了什么。

我已经让自动完成功能正常工作了,因为我使用了相同的bassistance自动完成代码。但是文本框的onclick事件没有触发...有什么原因吗? - Greens

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接