我正在使用jQueryUI 1.8,它是自动完成功能。
到目前为止,我已设法在多个字段中运行自动完成功能,如下所示:
$(function() {
$("#auto").autocomplete({
source: "/auto",
minLength: 2,
dataType: 'json',
change: function( event, ui ) {
$("#Id").val(ui.item ? ui.item.id : "");
$("#Info").val(ui.item.info);
$("#Info2").val(ui.item.info2);
},
select: function( event, ui ) {
$("#Id").val(ui.item ? ui.item.id : "");
$("#Info").val(ui.item.info);
$("#Info2").val(ui.item.info2);
}
});
});
这个想法是在可用时保存带有隐藏ID的表单,或者如果与数据库相比更改其中任何一个,则从字段auto,info和info2创建新记录。现在这是有效的,如果我选择一个记录并修改自动字段,它就像它应该清除隐藏的ID。但是,如果我选择一条记录并修改字段信息或info2,则选择的ID将保留在隐藏的输入中,这是错误的。
解决此问题的最佳方法是什么?
答案 0 :(得分:1)
您是否只想在#Id
或#Info
更改时清除#Info2
?您可以通过收听keydown
或change
事件来执行此操作:
$("#Info, #Info2").keydown(function() {
$("#Id").val('');
});
此外,您的更改功能会给我带来错误,因为在change
上,并不总是定义ui.item
。以下是您可以解决的问题:
change: function(event, ui) {
$("#Id").val(ui.item ? ui.item.id : "");
if (ui.item) {
$("#Info").val(ui.item.info);
$("#Info2").val(ui.item.info2);
}
},
我写了一个你要做的事情的例子:http://jsfiddle.net/dNdhk/。如果这不是你想要完成的,请告诉我。