首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery- select不使用ajax附加的select。

Jquery- select不使用ajax附加的select。
EN

Stack Overflow用户
提问于 2017-08-09 06:46:25
回答 1查看 1.6K关注 0票数 3

关于Jquery-Chosen,我面临着一个奇怪的问题。我有一个多选择框在一个弹出中,它的options使用ajax调用填充。不幸的是,Jquery-Chosen并没有对此进行研究。但是,如果我在同一位置使用静态多个选择框,它可以正常工作。我搜索了很多,但找不到解决办法。

以下是我的HTML代码-

代码语言:javascript
复制
<select multiple class="tid form-control assign_teacher_dropdown" name="assign_teacher[]">
</select>

以下是我的Jquery代码-

代码语言:javascript
复制
$.ajax({
    url: '/getclass/'+id,
    type: 'get',
    dataType: 'json',
    success: function (response) {
        if(response.status == '200') { 
            var class_info = response.class;                   
            var teacher_info = class_info.teacher;
            $('.assign_teacher_dropdown').empty();
            $('.ttterm_dropdown').empty();
            if(!teacher_info){
                $('.assign_teacher_dropdown').append('<option value="">Please select one</option>');
            }
            $('.class-id').val(class_info.id);
            $('.class-name').val(class_info.class_name);
            $('.class-code').val(class_info.class_code);
            $('.start-date').val(class_info.start_date);
            $('.end-date').val(class_info.end_date);
            var teacherDropdown = '';
            $.each(response.teachers, function( index, value ) {
                var optionSelected = '';
                if(teacher_info) {
                    if(response.selected_teacher.indexOf(index) !=-1){
                        var optionSelected = 'selected';                            
                    }
                }
                teacherDropdown = '<option '+optionSelected+' value="'+index+'">'+value+'</option>';
                $('.assign_teacher_dropdown').append(teacherDropdown);

            });

            $.each(response.terms, function( index, term ) {
                var optSelected = '';
                if(term) {
                    if(index == class_info.term_id){
                        var optSelected = 'selected';
                    }
                }
                var termDropdown = '<option '+optSelected+' value="'+index+'">'+term+'</option>';
                $('.tterm_dropdown').append(termDropdown);
            });

            $('.chosen-container-single-nosearch').hide();
            $('.assign_teacher_dropdown').show();
            $('.tterm_dropdown').show();
            $('#class-update-modal-update').modal('show');
        }
        else {
            validation.html(getMessage(response.message, 'danger'));
        }
        window.scrollTo(0, 0);
        $(".chosen-select").chosen(); ////for static multi select which is working fine
        $('.assign_teacher_dropdown').chosen(); ////it is not working
    }
});

响应-

代码语言:javascript
复制
response.teachers = Object { 2ee71930-70f9-11e7-8040-0744cf2f827d: "Raihan2 Razi2", 47e2f900-6c7d-11e7-98d2-ebfd03a47749: "Teacher -1", 5873df40-7028-11e7-a3a6-4b6f2ca6ed6b: "Teacher Akter", 0ad51850-7107-11e7-a380-8b0b33c8ce62: "Rakib-3 Hasan-3", 63cd0d30-7105-11e7-b09d-a7232d9caeba: "Rakib-2 Hasan-2", 6c2ab790-70f7-11e7-a4f5-aba1de53d767: "Raihan1 Razi1", a6a47520-70f3-11e7-85e1-d760ee2c8a38: "Raihan Razi", 331ba070-7114-11e7-bdd1-2107af6559b4: "Rakib-4 Hasan-4", cbf1d490-7028-11e7-bab1-97745facf387: "Teacher Mizan" }
teacher_info = {id: "5873df40-7028-11e7-a3a6-4b6f2ca6ed6b", email: "akter@wearedando.com", first_name: "Teacher", last_name: "Akter", dob: null, …}

输出-

N.B.:多个选择位于一个模态内。

N.B.:静态多选择在同一位置工作良好。

任何帮助都是非常感谢的。提前谢谢。

到目前为止我尝试过的-

  1. 获取变量中的所有选项,并使用.html()而不是追加
  2. 尝试与.assign_teacher_dropdown一起分配一个动态类,并在该动态类上调用.chosen()
  3. .chosen()ajax调用中分离出来,并使用单独的函数调用它。
EN

回答 1

Stack Overflow用户

发布于 2018-11-15 03:21:19

它不能工作的原因是在添加任何选项之前,在动态创建的弹出窗口上调用函数chosen()。当您使用$.each函数时,它会立即返回并异步调用谓词函数。在调用chosen()之前,需要等待添加所有选项

或者您可以在添加选项$("#form_field").trigger("chosen:updated");之前使用它们的动态API。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45583404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档