我以相对简单的方式使用jQuery的自动完成功能:
$(document).ready(function() {
var data = [ {text: "Choice 1"},
{text: "Choice 2"},
{text: "Choice 3"} ]
$("#example").autocomplete(data, {
matchContains: true,
minChars: 0,
formatItem: function(item)
{ return item.text; }
}
);
});
如何添加一个onclick事件(如按钮或链接),它将显示自动完成的所有可用选项?基本上我正在寻找自动完成和选择/下拉元素的混合。
谢谢!
答案 0 :(得分:98)
您可以触发此事件以显示所有选项:
$("#example").autocomplete( "search", "" );
或者查看以下链接中的示例。看起来就像你想要做的那样。
http://jqueryui.com/demos/autocomplete/#combobox
编辑(来自@cnanney)
注意:您必须在自动填充中设置minLength:0以获取空搜索字符串以返回所有元素。
答案 1 :(得分:34)
我发现这个效果最好
var data = [
{ label: "Choice 1", value: "choice_1" },
{ label: "Choice 2", value: "choice_2" },
{ label: "Choice 3", value: "choice_3" }
];
$("#example")
.autocomplete({
source: data,
minLength: 0
})
.focus(function() {
$(this).autocomplete('search', $(this).val())
});
搜索标签并将值放入元素$(#example)
答案 2 :(得分:18)
我无法在文档中看到明显的方法,但您尝试在启用自动填充功能的文本框上触发焦点(或点击)事件:
$('#myButton').click(function() {
$('#autocomplete').trigger("focus"); //or "click", at least one should work
});
答案 3 :(得分:6)
为了显示所有项目/模拟组合框行为,首先应确保将minLength选项设置为0(默认值为1)。然后,您可以绑定click事件以使用空字符串执行搜索。
$('inputSelector').autocomplete({ minLength: 0 });
$('inputSelector').click(function() { $(this).autocomplete("search", ""); });
答案 4 :(得分:4)
解决方案来自:Display jquery ui auto-complete list on focus event
使其不止一次起作用的解决方案
<script type="text/javascript">
$(function() {
$('#id').autocomplete({
source: ["ActionScript",
/* ... */
],
minLength: 0
}).focus(function(){
//Use the below line instead of triggering keydown
$(this).data("autocomplete").search($(this).val());
});
});
答案 5 :(得分:3)
$j(".auto_complete").focus(function() { $j(this).keydown(); })
答案 6 :(得分:3)
您必须将minLength
设置为零才能使其正常运行!这是工作示例。
$( "#dropdownlist" ).autocomplete({
source: availableTags,
minLength: 0
}).focus(function() {
$(this).autocomplete('search', $(this).val())
});
});
答案 7 :(得分:3)
试试这个:
$('#autocomplete').focus(function(){
$(this).val('');
$(this).keydown();
});
和 minLength 设置为 0
每次都有效:)
答案 8 :(得分:2)
这是唯一对我有用的东西。列表每次显示,并在选择时关闭:
$("#example")
.autocomplete(...)
.focus(function()
{
var self = this;
window.setTimeout(function()
{
if (self.value.length == 0)
$(self).autocomplete('search', '');
});
})
答案 9 :(得分:2)
你可以用这个:
$("#example").autocomplete( "search", $("#input").val() );
答案 10 :(得分:2)
这显示了所有选项:"%"
(见下文)
重要的是你必须把它放在前面的#example声明之下,就像下面的例子一样。我花了一段时间才弄明白。
$( "#example" ).autocomplete({
source: "countries.php",
minLength: 1,
selectFirst: true
});
$("#example").autocomplete( "search", "%" );
答案 11 :(得分:2)
希望这有助于某人:
$('#id')
.autocomplete({
source: hints_array,
minLength: 0, //how many chars to start search for
position: { my: "left bottom", at: "left top", collision: "flip" } // so that it automatically flips the autocomplete above the input if at the bottom
})
.focus(function() {
$(this).autocomplete('search', $(this).val()) //auto trigger the search with whatever's in the box
})
答案 12 :(得分:2)
<input type="text" name="q" id="q" placeholder="Selecciona..."/>
<script type="text/javascript">
//Mostrar el autocompletado con el evento focus
//Duda o comentario: http://WilzonMB.com
$(function () {
var availableTags = [
"MongoDB",
"ExpressJS",
"Angular",
"NodeJS",
"JavaScript",
"jQuery",
"jQuery UI",
"PHP",
"Zend Framework",
"JSON",
"MySQL",
"PostgreSQL",
"SQL Server",
"Oracle",
"Informix",
"Java",
"Visual basic",
"Yii",
"Technology",
"WilzonMB.com"
];
$("#q").autocomplete({
source: availableTags,
minLength: 0
}).focus(function(){
$(this).autocomplete('search', $(this).val())
});
});
</script>
答案 13 :(得分:1)
我用这个解决了这个问题 属性minChars:0和之后,触发两次单击。 (单击输入后自动完成显示) 我的代码
<input type='text' onfocus='setAutocomplete(this)'>
function setAutocomplete(el){
$(el).unbind().autocomplete("./index.php", {autoFill:false, minChars:0, matchContains:true, max:20});
$(el).trigger("click");$(el).trigger("click");
}
答案 14 :(得分:1)
我已经看到所有答案似乎都已完成。
如果您想在光标位于文本字段中时获取列表,或者当您单击匹配的标签时,请按以下步骤操作:
//YourDataArray = ["foo","bar"];
$( "#YourID" ).autocomplete({
source: YourDataArray
}).click(function() { $(this).autocomplete("search", " "); });
这在Firefox,IE,Chrome中运行良好......
答案 15 :(得分:1)
$("#searchPkgKeyWord").autocomplete("searchURL",
{
width: 298,
max: 1000,
selectFirst: false
}).result(function (event, row, formatted) {
callback(row[1]);
}).focus(function(){
$(this).click(); //once the input focus, all the research will show
});
答案 16 :(得分:0)
您也可以使用不带参数的搜索功能:
jQuery("#id").autocomplete("search", "");
答案 17 :(得分:0)
当输入值为空时,搜索输入内部的值。该代码对我有用:
$("#your_input").on('focus', function () {
$(this).autocomplete('search', $(this).val() == '' ? " " : $(this).val());
});
答案 18 :(得分:0)
我用这种方式:
$("#autocomplete").autocomplete({
source: YourDataArray,
minLength: 0,
delay: 0
});
然后
OnClientClick="Suggest(this); return false;"/>
function Suggest(control) {
var acControl = $("#" + control.id).siblings(".ui-autocomplete-input");
var val = acControl.val();
acControl.focus();
acControl.autocomplete("search");
答案 19 :(得分:0)
我最近需要这样做,在尝试了几种不同的排列后(使用onfocus,onbox文本框等),我终于明白了......
<input id="autocomplete" name="autocomplete" type="text"
value="Choose Document">
<p>
<button type="submit" value="Submit" name="submit" id="submit" >
Submit
</button>
</p>
<script type="text/javascript">
$("#autocomplete").autocomplete(
{
source: '@Url.Content("~/Document/DocumentTypeAutoComplete/")' //<--ddl source
, minLength: 0 // <-- This is necessary to get the search going on blank input
, delay: 0
, select: function (event, ui)
{
if (ui.item) {
$("#autocomplete").val(ui.item.value);//<-- Place selection in the textbox
$("docForm").submit();
loadDocTypeCreatePartial(ui.item);
$("#submit").focus(); //This stops the drop down list from reopening
// after an item in the select box is chosen
// You can place the focus anywhere you'd like,
// I just chose my *submit* button
}
}
}).focus(function () {
// following line will autoselect textbox text
// making it easier for the user to overwrite whats in the
// textbox
$(this).select();
//The below line triggers the search function on an empty string
$(this).data("autocomplete").search('');
});
</script>
这会在焦点上打开自动完成ddl列表(即使输入框中有默认文本,就像我上面那样)。
它还会自动选择文本框中的文本,以防止用户清除文本。
从自动完成列表中选择一个项目后,它会将该项目放入自动完成输入框并将焦点移动到另一个控件(从而阻止自动完成重新打开)。
我计划在有机会的时候通过Chosen选择列表添加动态Ajax调用来替换它。
答案 20 :(得分:0)
我想更好的选择是放置$(“#idname”)。autocomplete(“search”,“”);进入文本框的onclick参数。 从选择开始,jquery就会引入焦点,这可能是一种解决方法。 不知道它是否应该是一个可接受的解决方案。
答案 21 :(得分:0)
我无法使$("#example").autocomplete( "search", "" );
部分工作,只有在我使用我的源代码中存在的字符更改搜索后才能使用它。所以我随后使用了例如$("#example").autocomplete( "search", "a" );
。