Javascript 如何关闭下拉列表,在onchange函数中调用?
我使用选择框从下拉电子邮件列表中选择电子邮件,如果用户选择电子邮件,我调用javascript函数调用ajax,此ajax函数返回所选电子邮件的imap函数返回值,一切正常,但当用户选择电子邮件时,电子邮件下拉列表不会关闭,当ajax响应完成后,它将关闭 这是我的HTML下拉列表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">
<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);
}
});
}