微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery选择了动态ajax调用选项重复问题,如果使用empty元素,则丢失默认选择值

如何解决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 举报,一经查实,本站将立刻删除。