问题描述:ajax
当点击模态框的关闭按钮时,下拉框中的内容没有消失,而是移动到了页面左上角json
分析:这个问题的定位在因而用的哪一种模态框,bootstrap和easyui均可以实现模态框,可是两个方法实现的模态框下事件的处理方法是不一样的bootstrap
此处模态框是用bootstrap实现的,页面代码为:app
<div class="modal fade" id="moveStockToBrandModal" tabindex="-1" role="dialog" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> @await Html.PartialAsync("_ModalHeader", new ModalHeader { Heading = "Move to Brand?" }) <div class="modal-body"> <div class="row" style="padding-top:8px"> <div class="col col-xs-12"><label>Select folder</label></div> </div> <div class="row"> <div class="col col-xs-9"> <div class="input-group" id="stockToBrandSelectInputGroup"> <select id="stockToBrandFolderSelectCombobox" name="Folder" selected="false" hasDownArrow="false" data-options="prompt:'Search folders...'" style="width:100%; height:34px"></select> </div> </div> <div class="col col-xs-3" style="padding-left:5px;"><input type="button" id="btnMoveStockToBrandFolder" class="btn btn-primary" value="Move" style="width:114px;" disabled /></div> </div> </div> </div> </div> </div>
js代码为:ide
$('#btnMoveStockToBrand').click(function () { if (userIsBrandAdmin) { $.ajax({ url: '/Collections/GetBrandFolders', type: 'GET', dataType: 'json', contentType: 'application/json; charset=utf-8', success: function (result) { $('#stockToBrandFolderSelectCombobox').combobox({ valueField: 'id', textField: 'name', data: result.data, onSelect: function (event, ui) { $("#btnMoveStockToBrandFolder").removeAttr('disabled'); }, onUnselect: function (event, ui) { $("#btnMoveStockToBrandFolder").attr('disabled', 'disabled'); } }); } }); $('#moveStockToBrandModal').modal(); } });
解决这个问题须要使用bootstrap modal中的事件处理:show.bs.modal, shown.bs.modal, hide.bs.modal, hidden.bs.modal,ui
修改后的代码为:url
$('#btnMoveStockToBrand').click(function () { if (userIsBrandAdmin) { $.ajax({ url: '/Collections/GetBrandFolders', type: 'GET', dataType: 'json', contentType: 'application/json; charset=utf-8', success: function (result) { $('#stockToBrandFolderSelectCombobox').combobox({ valueField: 'id', textField: 'name', data: result.data, onSelect: function (event, ui) { $("#btnMoveStockToBrandFolder").removeAttr('disabled'); }, onUnselect: function (event, ui) { $("#btnMoveStockToBrandFolder").attr('disabled', 'disabled'); } }); } }); $('#moveStockToBrandModal').modal(); $('#moveStockToBrandModal').on('shown.bs.modal', function () { $('#stockToBrandSelectInputGroup').bind('input propertychange', function () { $('.panel.combo-p.panel-htop').show(); }); }).on('hide.bs.modal', function () { $('.panel.combo-p.panel-htop').hide(); }).on('hidden.bs.modal', function () { $('.panel.combo-p.panel-htop').hide(); }) } });