JQuery автозаполнение "побочный ущерб" в других областях - PullRequest
1 голос
/ 28 февраля 2010

У меня нормально работает поле автозаполнения jquery, за которым следует поле ввода даты. Всякий раз, когда пользователь выбирает элемент из списка автозаполнения, он правильно выбирает элемент и запускает результат (), но также создает «сопутствующий ущерб» в поле моей даты, вставляя в него идентификатор выбранного элемента автозаполнения. Это один из случаев, но я также заметил это в других случаях, иногда, если другие поля ввода находятся перед полем автозаполнения или позади, на самом деле не имеет значения. Кроме того, если есть 3 (любое число) других полей, все три будут вставлены ID элемента автозаполнения.

Это нежелательное поведение, и мне нужно от него избавиться. Кто-нибудь? * * 1003

Вот код:

        $("#Clients").focus().autocomplete('<%=Url.Action("GetClients", "Client") %>', {
            dataType: 'json',
            parse: function(data) {
                var rows = new Array();
                for (var i = 0; i < data.length; i++) {
                    rows[i] = { data: data[i], value: data[i].ClientName, result: data[i].ClientName };
                }
                return rows;
            },
            formatItem: function(row, i, n) {
                return row.ClientName;
            },
            width: 300,
            minChars: 0,
            max: 0,
            delay: 50,
            cacheLength: 10,
            selectFirst: true,
            selectOnly: true,
            mustMatch: true
        });

        $("#Clients").result(function(event, data, formatted) {
            if (data) {
                $(this).parent().next().find("input").val(data["client_id"]);
                if (data["ClientName"] && data["client_address1"] && data["client_postcode"] && data["client_postname"]) {
                    $("#ClientDetails").html(
                    "<li class=\"clientNumber\">Client Id: " + data["client_ClientNumber"] + "</li>" +
                    "<li>" + data["ClientName"] + "</li>" +
                    "<li>" + data["client_address1"] + "</li>" +
                    "<li>" + data["client_postcode"] + data["client_postname"] + "</li>"
                    );
                }
                else {
                    $("#ClientDetails").html(
                    "<li class=\"clientNumber\">Client Id: " + data["client_ClientNumber"] + "</li>" +
                    "<li>" + data["ClientName"] + "</li>");
                }
            }
        });

1 Ответ

0 голосов
/ 28 февраля 2010

Для меня эта строка

$(this).parent().next().find("input").val(data["client_id"]);

выглядит немного сомнительно.

  • Вы получаете родителя управление вводом с идентификатором «Клиенты»
  • Затем вы переходите к следующему пункту
  • Найти все элементы управления вводом в этом элементе
  • Установите значение все найденные элементы управления вводом для client_id
...