如何解决jQuery选择了动态ajax调用选项重复问题,如果使用empty元素,则丢失默认选择值
$(this.el).ready(function(){
setTimeout(function(){
var subItemsData = [];
$(self.el).chosen({
width: '100%',allow_single_deselect: true,no_results_text: "Oops,nothing found!",search_contains: false,max_selected_options: self.params.maxselected ? self.params.maxselected : 0
}).on('change',function(evt,params) {
var value = $(self.el).val();
self.set(value);
console.log("value",value);
}).on('chosen:showing_dropdown',params) {
})
$('#patient_diagnosis_chosen ul li.search-field input').autocomplete({
source: function( request,response ) {
if(request.term.length >= self.params.minlength){
$.ajax({
url: baseURL+'api/service/v1/get-data',dataType: "json",method:'post',data:{
'ids':$(self.el).val(),'key':request.term
},success: function( data ) {
var subItems=[]
data.input_data.forEach((item,index)=>{
subItems.push( "<option value="+item.id+">"+ item.code +' - '+item.short_description + "</option>" );
subItemsData.push(item)
})
$(self.el).append(subItems).trigger("chosen:updated");
}
});
}
}
});
},100);
});
此代码能够调用api并获得api响应,但是问题是如果我使用,选项会重复
$(self.el).empty().append(subItems).trigger("chosen:updated");
然后丢失默认选择值
如果可以清空该元素并设置默认元素。
解决方法
这个问题已经解决了这段代码对我有用。
var self = this;
// var ids=[]
$(this.el).ready(function(){
setTimeout(function(){
$(self.el).chosen({
width: '100%',allow_single_deselect: true,no_results_text: "Oops,nothing found!",search_contains: false,max_selected_options: self.params.maxselected ? self.params.maxselected : 0
}).on('change',function(evt,params) {
var value = $(self.el).val();
// ids = $(self.el).val();
self.set(value);
console.log("value",value);
}).on('chosen:showing_dropdown',params) {
})
$('#patient_diagnosis_chosen ul li.search-field input').autocomplete({
source: function( request,response ) {
if(request.term.length >= self.params.minlength){
$.ajax({
url: baseURL+'api/service/v1/get-data',dataType: "json",method:'post',data:{
'ids':$(self.el).val(),'key':request.term
},success: function( data ) {
var subItems=[]
var ids=$(self.el).val()
data.input_data.forEach((item,index)=>{
subItems.push( "<option value="+item.id+">"+ item.code +' - '+item.short_description + "</option>" );
})
$(self.el).empty().append(subItems).trigger("chosen:updated");
var test = $.trim(ids);
var testArray = test.split(',');
$(self.el).val(testArray).trigger("chosen:updated");
}
});
}
}
});
},100);
});
调用带有选定值的ajax并给出响应后,清空该元素,然后再次在selected中设置选定值
Api响应具有选择的值
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。