jquery オートコンプリート フィールドが正常に機能し、その後に日付入力フィールドが続きます。ユーザーがオートコンプリート リストからアイテムを選択するたびに、アイテムが正しく選択され、result() が起動されますが、選択したオートコンプリート アイテムの ID が挿入されて、日付フィールドに「巻き添え被害」が発生します。これはその 1 つのケースですが、他の入力フィールドがオートコンプリート フィールドの前または後ろにある場合は、実際には問題にならない場合もあります。また、他のフィールドが 3 つ (任意の数) ある場合、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>");
}
}
});