1

我有一个工作正常的 jquery 自动完成字段,然后是一个日期输入字段。每当用户从自动完成列表中选择一个项目时,它会正确选择该项目并触发 result() 但它也会在我的日期字段中创建“附带损害”,将所选自动完成项目的 ID 插入其中。这是其中一种情况,但我在其他场合也注意到了这一点,有时如果其他输入字段在自动完成字段之前或之后,这并不重要。此外,如果有 3 个(任意数量)其他字段,则所有三个字段都将插入自动完成项目 ID。

这是不受欢迎的行为,我需要摆脱它。任何人?

这是代码:

        $("#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>");
                }
            }
        });
4

1 回答 1

0

对我来说这条线

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

看起来有点可疑。

  • 您正在获取 ID 为“Clients”的输入控件的父级
  • 然后你移动到下一个项目
  • 查找此项内的所有输入控件
  • 所有找到的输入控件的值设置为 client_id
于 2010-02-28T14:06:59.810 回答