除非字段是从下拉列表填充的,否则JQuery-清除焦点的字段

时间:2013-05-07 12:10:28

标签: javascript jquery autocomplete jquery-ui-autocomplete

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

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

所以基本上,文本框中唯一可以出现的文本是最终从下拉列表中选择的。我怎么做到这一点?

我试过了:

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

  });

但即使他们从下拉列表中选择,这仍然会清除。我会采用什么逻辑来实现这一目标?我可以设置一个变量或从列表中选择时设置为true的变量。我会在聚焦功能上检查这个吗?

JQuery的新手!

2 个答案:

答案 0 :(得分:7)

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

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

Here's a simple demo fiddle

答案 1 :(得分:-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调用中的组合框的值