1

我正在通过jQuery UI在我自己的项目上尝试此演示,并发现需要对其进行必要的修改。见下面演示:jQuery UI自动完成:自定义数据提取问题

http://jqueryui.com/demos/autocomplete/#custom-data

在这个例子中,当我们键入“J”,并选择任何一个选项,它取一些文字和标志与之相关的。哪个工作正常。在这里,假设我们从给出的自动建议中选择“jQuery”。它将在左侧加载文本和jQuery徽标。但是假设在这样做之后,如果我们从文本框中删除单词“jQuery”的某些字符,那么它应该重置并显示空白输出。但它仍然是以前加载的文本和徽标。

一般来说,我想要做的是,用户必须从自我暗示中选择一些东西,而不是写出任何不在自动建议给出的东西。

我们该怎么做?

在此先感谢。

回答

0

您可以覆盖选择和改变事件来实现这一目标:

$(".combobox").autocomplete({ 
    minLength: 0, 
    source: function (request, respond) { 
     //some source 
    }, 
    change: function (event, ui) { 
     //if no value inside the LI, reset the input -> uses a custom selector 
     if ($(".ui-autocomplete li:textEquals('" + $(this).val() + "')").size() == 0) { 
      $(this).val(''); 
    }, 
    select: function (event, ui) { 
     $(this).val(ui.item.Name); 
    } 
); 

你只需要一个定制的选择,比较文字输入:

$.expr[':'].textEquals = function (a, i, m) { 
    return $(a).text().match("^" + m[3] + "$"); 
};