我正在使用Javascript自动完成小部件,该小部件在键入时会正确显示建议列表,但是当我按下向下键浏览列表时,当前输入将被删除。
虽然这不是我的确切问题,但是此jsfiddle应该演示该问题。键入字母并按下向下键后,它会将我的输入内容替换为所选内容。
这是我的代码:
$.widget('custom.mcautocomplete', $.ui.autocomplete, {
_create: function() {
this._super();
},
_renderItem: function(ul, item) {
var t = '',
result = '';
$.each(this.options.columns, function() {
t = '<span>' + item[0] + ' - R$ ' + item[1] + '</span>';
});
result = $('<li></li>')
.data(item)
.append(t)
.appendTo(ul);
return result;
}
});
$("#my-input").mcautocomplete({
columns: my-columns,
source: my-info,
select: function(event, ui) {
this.value = (ui.item[0]);
return false;
}
});
您必须取消焦点事件:
focus: function(event, ui) {
event.preventDefault();
}
您提供的jsfiddle确实取消了该事件,但是随后使用以下命令立即将其自身的动作无效:
$("#customer-search").val(ui.item.label);
焦点(事件,用户界面)
类型:自动完成对焦
当焦点移至某个项目(未选择)时触发。默认操作是将文本字段的值替换为焦点项目的值,尽管仅当事件是由键盘交互触发的时才如此。
取消此事件将阻止更新值,但不会阻止菜单项被聚焦。
程式码范例
使用指定的焦点回调初始化自动完成:
$( ".selector" ).autocomplete({ focus: function( event, ui ) {} });
将事件侦听器绑定到autocompletefocus事件:
$( ".selector" ).on( "autocompletefocus", function( event, ui ) {} );
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句