我有一個問題..我使用自動填充插件,我編輯爲使輸入文本消失時,用戶做出選擇。jQuery:即使元素已被刪除並重新創建,如何保留元素的功能?
所以,我的目標是,當用戶選擇從自動完成列表中的一行:
- 一個Ajax請求將檢索選定行附加信息(這裏沒問題)
- 表單自動與這些額外的信息fillup
- 與自動完成的輸入文本消失,並在它的地方我把2個div,一個與X內(以'取消'previus選擇),另一個與一些短關於選擇本身的信息(這裏沒有問題)
- 如果用戶點擊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並重新關聯自動完成功能。
那我怎麼COSE現在:
$(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('');
});
}
});
});
});
首先是因爲我有一個很複雜的標記,我更喜歡取代現有的元素,而不是改變他們的財產......現在,我明白我錯了,也許我會採取隱藏/顯示方式。 – Strae 2009-06-18 12:01:05