jQueryUI自动完成是";";关于初始值;不按预期响应箭头键
我有使用自动完成的jQueryUI自动完成是";";关于初始值;不按预期响应箭头键,jquery,jquery-ui,autocomplete,jquery-ui-autocomplete,usability,Jquery,Jquery Ui,Autocomplete,Jquery Ui Autocomplete,Usability,我有使用自动完成的元素,它们也有初始值。 问题是,我的用户希望单击输入并使用向上/向下箭头键来更改这些值——就像没有初始值时自动完成允许的那样(也就像行为一样) HTML: <label> Input with 4 possible values: <input type="text" value="green" id="tstInp"> </label> $("#tstInp").autocomplete ( { delay: 0,
元素,它们也有初始值。问题是,我的用户希望单击输入并使用向上/向下箭头键来更改这些值——就像没有初始值时自动完成允许的那样(也就像
行为一样)
HTML:
<label>
Input with 4 possible values:
<input type="text" value="green" id="tstInp">
</label>
$("#tstInp").autocomplete ( {
delay: 0,
minLength: 0,
source: ["red", "green", "blue", "yellow"]
} )
jsFiddle:
<label>
Input with 4 possible values:
<input type="text" value="green" id="tstInp">
</label>
$("#tstInp").autocomplete ( {
delay: 0,
minLength: 0,
source: ["red", "green", "blue", "yellow"]
} )
要复制问题:
一样。而且,您可以通过键入字母来筛选值green
,在本例中)。例如:
预期行为与autocomplete当前所做的唯一区别在于,在输入聚焦后,初始的上/下箭头键应立即显示所有可能的值——理想情况下,初始值已在下拉菜单中聚焦 如何让autocomplete按预期响应向上/向下箭头
我使用的是jQuery 2.1.0和jQuery UI 1.11.1。它的行为应该是这样的,当您输入一个值时,如果该值在列表中没有匹配项,它将不显示任何内容,如果它有一个或多个匹配项,它将显示那些匹配的值。 我希望如此 会帮助你理解
source: ["red", "green", "greenish", "blue", "yellow"]
传递源选项的函数,不过滤结果
var src = ['red', 'green', 'blue', 'yellow'];
$("#tstInp").autocomplete({
source: function (request, response) {
response(src);
}
});
请参见以下一种可能的解决方案:
- 使用向下箭头键打开下拉列表时显示所有值
- 否则返回默认行为
var source=[“红色”、“绿色”、“蓝色”、“黄色”],
showall;
$(“#自动完成1”)。自动完成({
最小长度:0,
搜索:功能(事件、用户界面){
showall=event.which==40;
},
来源:功能(请求、响应){
响应(showall?源:$.ui.autocomplete.filter(源、请求、术语));
}
});
原始答复: 通过(i)设置(ii)调用方法并传递空字符串,可以打开下拉列表并手动显示所有值(例如,单击按钮)。您可以在文本框的焦点事件中查看此行为,或为此添加专用按钮
在小提琴上:(1)擦除输入,(2)使用箭头键向下滚动至
绿色。请注意,输入为绿色
,并且仍然列出所有值(尚未过滤)。这就是我们测试的用户期望该控件的行为方式(它是组合框的一部分)。我该怎么做?很抱歉,这有点让人困惑,当你擦除输入,上下箭头键显示选项时,是否应该在上下箭头键上应用过滤?即使你没有选择它,过滤也应该正常工作——除了初始焦点,它看起来像。上下键应在过滤后的可用选项之间滚动,但只有新的(重新)输入焦点,在按下任何键之前,过滤应忽略输入值。我想从给定的角度来看,这个答案是正确的。看起来我必须扩展这个控件以使其对用户友好?那么为什么不使用combobox呢?我想这就是你要找的?是吗?好的,如果用户在步骤4中输入bl
,会发生什么?它应该显示所有的值还是只显示蓝色
?@SalmanA,只显示蓝色
。(一旦输入被清除,该部分就能正常工作。)谢谢。它确实解决了最初的箭头键问题,但它打破了过滤。清除输入后,它仍然需要作为标准的自动完成。这确实给了我一个尝试的想法。是的。看来我得开一个状态机来对焦、搜索和按键。如果在接下来的24小时内没有更好的表现,这就是答案。谢谢,我想了一下。下拉菜单在各种事件上打开,例如(i)用户键入时(ii)单击向下箭头。您可以捕获后一个事件并覆盖搜索行为以显示所有值;否则使用默认行为。关闭。除了一种情况(选择、模糊、聚焦、{oops})外,其他情况都适用(ETA:可能不适用,我使用向上箭头进行测试)。你有没有理由降低jQ和jQUI的速度?无论如何,我需要考虑一下这个问题。(I)你必须按下向下箭头(这是激活空自动完成的方式)(ii)没有特别的原因;请注意,我之所以选择这个答案,是因为它是目前最好的解决方案,而我的实际代码在分类上是相似的。(计划在第二天或第二天发布——可能只是把它附加到这个答案中)。但此答案确实满足所有要求,因此请不要编辑问题以匹配答案。;)