Javascript 如何关闭下拉列表,在onchange函数中调用?

Javascript 如何关闭下拉列表,在onchange函数中调用?,javascript,php,html,jquery,ajax,Javascript,Php,Html,Jquery,Ajax,我使用选择框从下拉电子邮件列表中选择电子邮件,如果用户选择电子邮件,我调用javascript函数调用ajax,此ajax函数返回所选电子邮件的imap函数返回值,一切正常,但当用户选择电子邮件时,电子邮件下拉列表不会关闭,当ajax响应完成后,它将关闭 这是我的HTML下拉列表 <div class="row"> <div class="col-md-12"> <div class="form-group m-form__group">

我使用选择框从下拉电子邮件列表中选择电子邮件,如果用户选择电子邮件,我调用javascript函数调用ajax,此ajax函数返回所选电子邮件的imap函数返回值,一切正常,但当用户选择电子邮件时,电子邮件下拉列表不会关闭,当ajax响应完成后,它将关闭

这是我的HTML下拉列表

<div class="row">
    <div class="col-md-12">
        <div class="form-group m-form__group">
               <select name="info_email" id="info_email" class="form-control m-bootstrap-select m_selectpicker" data-live-search="true" onchange="get_mail_content_block(this.value);">
                <option value="">Choose Email</option>

                <?php 
                    $admindata = $this->session->userdata('admindata');
                    if ($admindata['email_id'] != '') {
                        $users_email_info = get_users_mail_details_if_exist($admindata['email_id']);    
                        if(count($users_email_info) > 0){
                            echo "<option value=".$users_email_info->email_detail_id.">".$users_email_info->email_ID."</option>"; 
                        }
                    }

                 ?>
                    <?php
                        if(!empty($email_lists))
                        {
                            foreach ($email_lists as $key => $email_list) { ?>
                                <option value="<?php echo $email_list->email_detail_id; ?>" <?php if($default_email == $email_list->email_detail_id){ echo 'selected'; }else{ echo ''; } ?>><?php echo $email_list->email_ID; ?></option>
                            <?php }
                        }
                    ?>
               </select>
        </div>
    </div>
</div>

您应该删除
async:false
,它使AJAX调用同步,并阻塞整个浏览器(Javascript是单线程的)

在任何情况下,同步AJAX都是必要的

a) 完全没有必要

b) 不推荐使用,正是因为它会导致此类问题-如果某些浏览器看到您正在使用它,它们会在控制台中发出警告

另外,您还添加了两次
类型:“POST”
,这不会导致问题,但是多余的

function get_mail_content_block(val)
{
    $('#mailbox_loader_img').show();
    $.ajax({
    type: "POST",
    url: baseurl+'Mailbox/email_content_block',
    async: false,
    type: "POST",
    data:{'email_id':val },
    dataType: "html",

    success: function(response)
    {
        $('#mailbox_loader_img').hide();
        $('#mail_content_append_block').empty().append(response);   
    }

    });
}