自动完成禁止免费文本输入?

JK.*_*JK. 41 jquery jquery-ui jquery-autocomplete

是否可以禁止JQuery UI自动完成小部件中的自由文本输入?

例如,我只希望允许用户从自动完成列表中显示的项目列表中进行选择,并且不希望他们能够编写一些随机文本.

我没有在演示/文档中看到任何描述如何执行此操作的内容.

http://jqueryui.com/demos/autocomplete/

我正在使用这样的自动完成功能

$('#selector').autocomplete({
    source: url,
    minlength: 2,
    select: function (event, ui) {
        // etc
    }
Run Code Online (Sandbox Code Playgroud)

Nei*_*ils 80

根据API文档,如果未从列表中选择条目,则change事件的ui属性为null,因此您可以像下面这样简单地禁用自由文本:

change: function(event, ui) {
    if (ui.item == null) {
        $("#your_input_box").val("");
        $("#your_input_box").focus();
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 为我工作,很好的一个:) (4认同)
  • 也为我工作;) (2认同)
  • `更改:(e,ui) - >($'#input_box').val('').focus()如果不是ui.item`用于Coffeescripters. (2认同)
  • 它对我有用.非常感谢. (2认同)

Raj*_*aja 10

如果您希望用户从列表中获取该项目,请使用自动完成组合框.

http://jqueryui.com/demos/autocomplete/#combobox

HTH

  • 你仍然可以输入,这正是他所说的他不想要的. (4认同)

Aar*_*nes 3

一种方法是在表单提交时使用额外的验证(如果您使用的是表单),以在文本不是有效选项之一时突出显示错误。

另一种方法是附加到自动完成的更改事件,即使未选择选项也会触发该事件。然后,您可以进行验证以确保用户输入位于您的列表中,如果不在列表中,则显示错误。