显示的事件类型为shown.bs.modal,调用次数

时间:2017-03-01 00:07:47

标签: javascript html twitter-bootstrap

请检查我的代码:

HTML:

<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Teste</button>

<!-- Modal -->
<div id="myModal" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">Teste modal</h4>
      </div>
      <div class="modal-body">
        <label class="control-label">Select File</label>
        <input id="input-1a" type="file" class="file" data-show-preview="false">
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Fechar</button>
      </div>
    </div>

  </div>
</div>

JS:

$('#myModal').on('shown.bs.modal', function(e) {
  alert("alert");
})

我正在使用此插件:http://plugins.krajee.com/file-input#usage

这里是jsfiddle:https://jsfiddle.net/DTcHh/30285/

在第$('#myModal').on('shown.bs.modal', function(e)行中,它会执行2次。

删除行<input id="input-1a" type="file" class="file" data-show-preview="false">,工作正常。

任何解决方案?

2 个答案:

答案 0 :(得分:2)

您正在使用两个可能与jQuery发生冲突的JavaScript库。为了避免这些冲突,您需要将jQuery置于无冲突模式,如下所示:

jQuery(document).ready(function( $ ) {
    $('#myModal').on('shown.bs.modal', function(e) {
       alert("alert");
       e.stopPropagation();
    })
});

希望这有帮助!

答案 1 :(得分:0)

我遇到同样的麻烦,这是我的解决方案

var tm = false;
$('#myModal').on('shown.bs.modal', function(e) {
if(tm) {tm=false;return;}
else { alert('ok'); tm= true;}
})