Jquery UI自动完成; minLength:0期

kra*_*626 37 html javascript jquery jquery-ui autocomplete

我正在使用JQuery UI自动完成.我指定最小长度.如果我指定minLength:2我需要在服务触发前键入2个字符.如果我指定minLength:1那么我只需要在源服务触发之前键入一个字符.

但是,当我指定时,minLength:0我仍然需要输入一个字符.那么重点是0什么?它有什么不同1?预期的和期望的行为将在输入具有焦点时立即触发......?

想法?

更新:在大多数情况下,karim的解决方案可以正常工作,但是当点击输入时会出现选项,当单击一个时,源会重新提交空字符串而不是刚刚选中的新选项,因此自动完成选项选择一个选项后,如果该框已空,则相同.

kar*_*m79 55

查看search方法文档:

触发搜索事件,当数据可用时,将显示建议; 可以由类似选择框的按钮用于在单击时打开建议.如果未指定value参数,则使用当前输入的值.可以使用空字符串和minLength:0来调用以显示所有项目.

var source = ['One', 'Two', 'Three', 'Four'];

var firstVal = source[0];

$("input#autocomplete").autocomplete({
    minLength: 0,
    source: source,
}).focus(function() {
    $(this).autocomplete("search", $(this).val());
});
Run Code Online (Sandbox Code Playgroud)
.ui-menu-item{
  background : rgb(215, 215, 215);;  
  border : 1px solid white;
  list-style-type: none;
  cursor : pointer;
}

.ui-menu-item:hover{
  background : rgb(200, 200, 200);
}


.ui-autocomplete{
   padding-left:0;
   margin-top  : 5px;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.js"></script>
<input id="autocomplete"/>&nbsp;<input id="submit" type="submit"/>
Run Code Online (Sandbox Code Playgroud)

  • @karmin - 我不知道为什么,但添加`if`语句实际上**导致**自动完成的问题在选择一个选项后再次打开空字符串的结果.对我来说没有任何意义,但没有它,如果它完美无缺.使用if,如果我单击输入框并选择一个选项,则自动完成将我选择的选项放入输入框.但然后再次显示选项,好像输入是空的. (2认同)

ras*_*asx 6

我通过实验了解为什么接受的答案(我投票)可以被认为是略微不完整的.我添加了一些意图,使UX更像组合框:

$('#Carrier').autocomplete(
{
    source: '@Url.Action("AutocompleteCarrier", "Client")',
    minLength: 0,
    select: function (event, data) {
        $(this).autocomplete('disable');
    }
})
.blur(function(){
    $(this).autocomplete('enable');
})
.focus(function () {
    $(this).autocomplete('search', '');
});
Run Code Online (Sandbox Code Playgroud)