1

希望这是有道理的。我有一个使用 jQuery UI 自动选择功能的文本输入。当用户选择时,输入会自动填充,这是应该的。我的问题是,如果用户输入了某些内容,但没有从下拉列表中选择。这会导致文本输入值在表单提交时列表中不存在。我想知道是否有办法对“更改”事件执行操作(明文输入值),但将其保留为“选择”事件。

4

2 回答 2

1

如果我对您的理解正确,您应该能够利用ui传递给change事件处理程序的参数:

$("#auto").autocomplete({
    /* options */
    change: function (event, ui) {
        if (!ui.item) {
            this.value = '';
        }
    }
});

ui.itemundefined如果未从自动完成候选列表中选择任何内容,将是。

示例:http: //jsfiddle.net/ZBzpF/

于 2012-08-29T02:17:19.437 回答
0

在更改事件处理程序中,检查当前值是否在源中,如果没有,则重置它。就像是:

var sourceArray = ["a", "b", "c"],
$autocomplete = $('#autocomplete');
$autocomplete.autocomplete({
    source: ,
    change: function(e, ui) {
        if ($.inArray($autocomplete.val(), sourceArray) === -1) {
            //change the value
        }
    })
}
于 2012-08-28T22:29:27.863 回答