希望有道理。我有一个使用jQuery UI自动选择功能的文本输入。当用户选择时,输入会自动填充。我的问题是如果用户输入了一些东西,但是没有从下拉列表中选择。这导致文本输入值是表单提交时列表中不存在的值。我想知道是否有一种方法可以对'change'事件执行操作(明文输入值),但保留原样用于'select'事件。
答案 0 :(得分:1)
如果我理解正确,您应该能够利用传递给ui
事件处理程序的change
参数:
$("#auto").autocomplete({
/* options */
change: function (event, ui) {
if (!ui.item) {
this.value = '';
}
}
});
如果从自动填充候选列表中未选择任何内容,则 ui.item
将为undefined
。
答案 1 :(得分:0)
在更改事件处理程序中,检查当前值是否在源中,如果没有,则重置它。类似的东西:
var sourceArray = ["a", "b", "c"],
$autocomplete = $('#autocomplete');
$autocomplete.autocomplete({
source: ,
change: function(e, ui) {
if ($.inArray($autocomplete.val(), sourceArray) === -1) {
//change the value
}
})
}