【问题标题】:jQueryUI Autocomplete on multiple fields多个字段上的 jQueryUI 自动完成
【发布时间】:2011-07-08 21:09:27
【问题描述】:

我使用的是 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 一样工作。但是,如果我选择一条记录并修改字段 info 或 info2,则选择的 id 会留在隐藏输入中,这是错误的。

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

【问题讨论】:

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


    【解决方案1】:

    #Info#Info2 更改时,您是否只想清除#Id?您可以通过收听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/。如果这不是您想要完成的,请告诉我。

    【讨论】:

    • 非常感谢!这足以让它发挥作用。现在我可以继续前进了。
    猜你喜欢
    • 2020-06-24
    • 2015-03-28
    • 2011-08-29
    • 2014-09-12
    • 2013-04-05
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多