3

我有一个文本框,用户在其中输入一些文本,然后出现一个下拉列表。当用户从下拉列表中选择某些内容时,下拉列表中的文本将替换他们键入的文本。

现在,如果他们没有从下拉列表中选择任何内容,我希望此文本框自行清除。

所以基本上,可以出现在文本框中的唯一文本是最终从下拉列表中选择的内容。我将如何实现这一目标?

我试过了:

  jQuery("#" + field).focusout(function() {
    jQuery("#" + field).val("");

  });

但即使他们从下拉列表中选择,这仍然会清除。我会实施什么逻辑来做到这一点?当他们从列表中选择时,我可以设置一个变量或设置为 true 的东西。然后我会在焦点输出功能上检查这个?

对 JQuery 很陌生!

4

2 回答 2

8

使用autocomplete change事件,检查是否存在ui(从菜单中选择的项目,如果有。否则属性为null),如果不存在,那么你知道用户没有选择一个autocomplete选项,你可以清空值:

change: function (ev, ui) {
    if (!ui.item) {
        $(this).val('');
    }
}

这是一个简单的演示小提琴

于 2013-05-07T12:23:53.493 回答
-1

可能是这样的:

jQuery("#" + field).focusout(function() {
    var enteredValue = $("#" + field).val();
    var listOfAvailableOptions = //put method call here
    if($inArray(enteredValue, listOfAvailableOptions)) //possibly use IndexOf() here and check if = -1
{
    jQuery("#" + field).val("");

}
});

更简洁的方法是从 AJAX 调用填充组合框的值

于 2013-05-07T12:22:12.987 回答