这个问题以前曾以各种形式提出过,但我找不到满意的答案,所以我想特别提出这个问题。
我有一个选择的选择框,如下所示:
<select name="publicationID[]" id="publicationID[]" class="chzn-select-create-option" data-placeholder="Select Publication or type new..." style="width:550px;">
这是常规选择的略微修改版本,允许您向下拉列表添加元素(这与问题无关)。
我有一个按钮,上面写着“添加另一个发布”,它会触发Ajax查询以创建上述元素的副本,即publicationID []。
由于select元素的ID冲突,选择的麻烦不适用于克隆。正如您所看到的,我正在使用ID名称的数组版本,以便在发布数据后我可以遍历数组,但如果所选样式不能应用于副本,那么这并不好。
我的初始selected()调用是在返回元素的副本后在ajax中进行的,通常工作正常,除非在这个重复ID的实例中:
(阿贾克斯)
document.getElementById(div).innerHTML=oXmlHttp.responseText
doChosen();
(doChosen功能)
function doChosen() {
$(".chzn-select").chosen();
$(".chzn-select-deselect").chosen({allow_single_deselect:true});
$(".chzn-select-create-option").chosen({
create_option: function(term){
var chosen = this;
chosen.append_option({
value: term,
text: "New: " + term
});
},
persistent_create_option: true
});
}
我在这里看到了几个解决方案,谈论在表单中删除和重新应用所选择的样式,但我没有看到任何内容以简单的方式让我遵循。