私は問題があります..jQuery:要素が削除されて再作成された場合でも、要素の機能を保持する方法は?
私はユーザーが選択したときに入力テキストが消えるようにするために、私は編集する自動補完プラグインを使用します。
だから、私の目標は、ユーザーが自動補完リストから行を選択すると、次のとおりです。
- Ajaxリクエストが選択された行(ここでは問題なし)
- フォームに関する追加情報を取得します自動
- オートコンプリートのある入力テキストが消えて、その場所に2つのdivと1つのXが入ります(previusの選択を解除するには)、もう1つは短い選択自体に関する情報(ここでは問題なし)
- ユーザーX divをクリックすると、すべてがbeginとして返され、input-textはオートコンプリートとなります。 私に起こる何
、点4で、すべてが正常に動作していることですが、オートコンプリートで入力テキストを
$("div#contact-list-container").html('<input type="text" name="contact-list" id="contact-list" value="" />');
によって再作成されたときに、オートコンプリートはもう動作文句を言いません!
したがって、再作成時にオートコンプリート機能をフィールドに追加するにはどうすればよいですか?ユーザがそれを何度も選択および選択解除できるようにするため。
p.s:私は入力テキストでdivを非表示にしてXで表示することができますが、htmlマークアップを最小限に抑え、隠れたdivで混乱させたくないことがわかります。 可能であれば、selectのたびに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