为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 onchange 函数中关闭下拉菜单?

如何在 onchange 函数中关闭下拉菜单?

PHP
手掌心 2023-04-28 17:07:40
我使用选择框从下拉电子邮件列表中选择电子邮件,如果用户选择电子邮件,我调用一个 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>在上面我调用了 get_mail_content_block(id); Javascript函数是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);       }    });}
查看完整描述

1 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

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


在任何情况下同步 AJAX 是


a) 完全没有必要



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


PS 你也添加了type: "POST"两次,这不会造成问题,但是是多余的。


查看完整回答
反对 回复 2023-04-28
  • 1 回答
  • 0 关注
  • 81 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信