【发布时间】:2025-12-02 13:25:01
【问题描述】:
我有问题..
我使用自动完成插件,我编辑该插件以使输入文本在用户做出选择时消失。
所以,我的目标是,当用户从自动完成列表中选择一行时:
- Ajax 请求将检索有关所选行的附加信息(这里没问题)
- 带有这些附加信息的表单自动填写(在此处确定)
- 带有自动完成功能的输入文本消失了,我在其中放置了 2 个 div,其中一个带有 X(用于“取消选择”之前的选择),另一个带有一些关于选择本身的简短信息(这里没有问题)
- 如果用户单击 X div,则所有内容都必须作为开始返回,并且输入文本具有自动完成功能。
发生在我身上的是,在第 4 点,一切正常,但是当具有自动完成功能的输入文本由
重新创建时$("div#contact-list-container").html('<input type="text" name="contact-list" id="contact-list" value="" />');
自动完成功能不再起作用了!
那么,如何在重新创建字段时将自动完成功能加入到字段中?为了让用户可以多次选择和取消选择。
p.s: 我知道我可以简单地用输入文本隐藏 div 并用 X 显示那个,但我更喜欢保持 html 标记最少并且不要乱用隐藏的 div。 如果可能的话,我想在每次选择时更改 innerHTML 并重新关联自动完成功能。
这就是我现在的样子:
$(document).ready(function(){
$('input#contact-list').autocomplete('test-db.php', {
multiple: false,
dataType: "json",
width: 400,
scrollHeight: 300,
max: 5,
parse: function(data) {
return $.map(data, function(row) {
return {
data: row,
value: row.azienda,
//result that will be used in the text field, while selected
result: row.code + ' - ' + row.company + ' | ' + row.name + ', ' + row.surname
}
});
},
formatItem: function(item) {
return item.code + ' - ' + item.company + '<br />' + item.name + ', ' + item.surname + '<br />' + item.email;
}
}).result(function(e, item) {
//this will be triggered when the selection has made
$.ajax({
type: "POST",
cache: false,
data: "idCompany=" + item.id_company + "&idUser=" + item.id_user,
url: "test-db-02.php",
success: function(message){
$("input[rel='ship']").attr("readonly", true).css("background-color", "#DFDFDF");
$("input[rel='company']").attr("readonly", true).css("background-color", "#DFDFDF");
var rd = json_parse(message);
$("input#ship-nome-referente").val(rd.company.nome);
$("input#ship-cognome-referente").val(rd.company.cognome);
//[... and so on, i change the val of many fields..]
//REPLACE THE INPUT-TEXT WITH THE DIVS
$("div#contact-list-container").html('<div id="deselect-contact">X</div><div id="selected-contact">' + rd.company.code + ' - ' + rd.company.company + ' | ' + rd.company.name + ', ' + rd.company.surname + '</div>');
$("div#deselect-contact").click(function(){
//REPLACE THE DIVS WITH THE INPUT-TEXT.. HOW TO REASSOCIATE THE AUTOCOMPLETE?
$("div#contact-list-container").html('<input type="text" name="contact-list" id="contact-list" value="" />');
$("input[rel='ship']").attr("readonly", false).css("background-color", "#FFFFFF").val('');
$("input[rel='company']").attr("readonly", false).css("background-color", "#FFFFFF").val('');
});
}
});
});
});
【问题讨论】:
标签: jquery autocomplete