Twitter引导程序调用ajax超过1次

时间:2015-03-27 20:47:47

标签: jquery ajax twitter-bootstrap modal-dialog

我正在使用twitter bootstrap 3.3.1来弹出模态。模态的内容是一种形式(非远程)。我正在使用ajax在数据库中插入值。

我的问题是,如果我打开表单并关闭它然后再打开它然后在提交表单时调用ajax两次(我可以在控制台中看到)。

我的模态是与元素(按钮)绑定,它在数据表中多次动态生成。

以下是我的js代码

$("#datatable").on('click', '.my-button', function(){

                var id = $(this).attr("data-id");

                $('#myModal').modal('show');                

                $('.btn-close-modal').on('click', function() {                          
                    $('#myModal').modal('hide');

                });

                $('.btn-save-changes').on('click', function() {

                    $('#myModal').modal('hide');


                    var rmk = $('#remark').val();

                    $.ajax({
                        url: 'add-value.php',
                        type: 'POST',
                        data: { id: id, rm: rmk },
                        success: function(a) {

                        }
                    });
                });
});

以下是我的模态代码

<div class="modal" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close btn-close-modal" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
        <h4 class="modal-title" id="myModalLabel">Form</h4>
      </div>
      <div class="modal-body" id="modal-body">

        <div class="row">
         <div class="col-md-12">
            <div class="box box-primary">
                <div class="box-header">
                </div><!-- /.box-header -->

                <!-- form start -->
                <form role="form" method="post">                        
                    <div class="box-body">
                        <div class="form-group">
                                <label for="name">Remark</label>                                
                                 <input type="text" class="form-control" id="remark" name="remark" >

                            </div><!-- /.form group -->                         

                    </div><!-- /.box-body -->  

                </form>
            </div><!-- /.box -->
         </div>
        </div> <!--/.row--->

      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default btn-close-modal">Close</button>
        <button type="button" class="btn btn-primary btn-save-changes">Submit</button>
      </div>
    </div>
  </div>
 </div>

我已尝试过以下所有这些代码,但它们无效

$('#myModal').on('hide.bs.modal', function () {
   $('#myModal').removeData();
})

$("#myModal").on('hidden.bs.modal', function () {
    $(this).data('bs.modal', null);
});

$('body').on('hidden.bs.modal', '#myModal', function () {
  $(this).removeData('bs.modal');
});

$( '#myModal' ).modal( 'hide' ).data( 'bs.modal', null );

1 个答案:

答案 0 :(得分:1)

我会疯狂猜测并说每次$(&#39; #datable&#39;)。on()的表单都会发布一次。尝试分离jQuery以显示/隐藏模态并发布表单,如:

$('#datatable').on('click', function () {
    // show the modal
});

$('.btn-close-modal').on('click', function () {
    // hide the modal
});

$('.btn-save-changes').on('click', function () {
    // ajax
});