我有一个文本框,用户放入一些文本,然后会出现一个下拉列表。当用户从下拉列表中选择某些内容时,下拉列表中的文本将替换他们键入的文本。
现在,我希望此文本框能够清除,如果他们没有从下拉列表中选择任何内容。
所以基本上,文本框中唯一可以出现的文本是最终从下拉列表中选择的。我怎么做到这一点?
我试过了:
jQuery("#" + field).focusout(function() {
jQuery("#" + field).val("");
});
但即使他们从下拉列表中选择,这仍然会清除。我会采用什么逻辑来实现这一目标?我可以设置一个变量或从列表中选择时设置为true的变量。我会在聚焦功能上检查这个吗?
JQuery的新手!
答案 0 :(得分:7)
使用autocomplete
change 事件,检查是否存在ui
(从菜单中选择的项目,如果有的话。否则该属性为null ),如果它不存在,那么您知道用户没有选择autocomplete
选项,您可以清空该值:
change: function (ev, ui) {
if (!ui.item) {
$(this).val('');
}
}
答案 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调用中的组合框的值