我有以下内容 http://jsfiddle.net/TgBzB/3/ 并且想要在用户选择项目时清除自动填充字段。以下代码不会这样做: -
$("#input").data("kendoAutoComplete").value("");
这可能吗?
//create AutoComplete UI component
$("#input").kendoAutoComplete({
dataSource: data,
filter: "startswith",
placeholder: "Select country...",
select: function(e) {
var dataItem = this.dataItem(e.item.index());
$('#list').append("<li>" + dataItem + "</li>");
//How do I clear the #input here?
$("#input").data("kendoAutoComplete").value("");
}
});
您的代码会清除输入,但select事件会提前触发,并在之后添加值。你要做的是清除输入 change
事件:
$("#input").kendoAutoComplete({
dataSource: data,
filter: "startswith",
placeholder: "Select country...",
select: function(e) {
var dataItem = this.dataItem(e.item.index());
$('#list').append("<li>" + dataItem + "</li>");
},
change: function(e) {
$("#input").data("kendoAutoComplete").value("");
}
});
您的代码会清除输入,但select事件会提前触发,并在之后添加值。你要做的是清除输入 change
事件:
$("#input").kendoAutoComplete({
dataSource: data,
filter: "startswith",
placeholder: "Select country...",
select: function(e) {
var dataItem = this.dataItem(e.item.index());
$('#list').append("<li>" + dataItem + "</li>");
},
change: function(e) {
$("#input").data("kendoAutoComplete").value("");
}
});
这也是另一种同样有效的替代方案,而不是在更改事件之后清除它,而只是通过使用来阻止它显示在第一位 e.preventDefault();
...
select: function(e) {
var dataItem = this.dataItem(e.item.index());
$('#list').append("<li>" + dataItem + "</li>");
$("#input").data("kendoAutoComplete").value("");
e.preventDefault();
}
...
已经更新了jsFiddle http://jsfiddle.net/rippo/TgBzB/8/
select: function(e) {
....
e.preventDefault();
}
不允许你搜索相同的关键词(立即输入)。如果你逐字符地键入相同的关键字并给出几毫秒的时间,它将起作用。
即使您使用MVVM绑定来多选值,这也可以正常工作。
select: function(e) {
var widget = $('#widgetId').data('kendoMultiSelect');
widget.input.val('');
}
只需使用此选项即可清除自动完成状态
$("#autoCompleteName").val("");