jQueryUI Автозаполнение на нескольких полях - PullRequest
2 голосов
/ 08 июля 2011

Я использую 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);
        }
    });
});

Идея состоит в том, чтобы сохранить формусо скрытым идентификатором, если он доступен, или создайте новую запись из полей auto, info и info2, если какие-либо из них изменены по сравнению с базой данных.Теперь это работает, если я выбираю запись и изменяю автоматическое поле, оно очищает скрытый идентификатор, как и должно.Но если я выбираю запись и изменяю поля info или info2, выбранный идентификатор остается в скрытом вводе, что неверно.

Каков наилучший подход для решения этой проблемы?

1 Ответ

1 голос
/ 08 июля 2011

Вы просто хотите очистить #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/. Дайте мне знать, если это не то, чего вы пытаетесь достичь.

...