jquery autoselect对'更改'但不是选择'

时间:2012-08-28 19:45:03

标签: javascript jquery html jquery-ui jquery-ui-autocomplete

希望有道理。我有一个使用jQuery UI自动选择功能的文本输入。当用户选择时,输入会自动填充。我的问题是如果用户输入了一些东西,但是没有从下拉列表中选择。这导致文本输入值是表单提交时列表中不存在的值。我想知道是否有一种方法可以对'change'事件执行操作(明文输入值),但保留原样用于'select'事件。

2 个答案:

答案 0 :(得分:1)

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

$("#auto").autocomplete({
    /* options */
    change: function (event, ui) {
        if (!ui.item) {
            this.value = '';
        }
    }
});
如果从自动填充候选列表中未选择任何内容,则

ui.item将为undefined

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

答案 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
        }
    })
}