jQueryUI在多个字段上自动完成

时间:2011-07-08 12:10:31

标签: jquery jquery-ui autocomplete jquery-autocomplete jquery-ui-autocomplete

我正在使用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将保留在隐藏的输入中,这是错误的。

解决此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您是否只想在#Id#Info更改时清除#Info2?您可以通过收听keydownchange事件来执行此操作:

$("#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/。如果这不是你想要完成的,请告诉我。