触发表单提交上的bootstrap模式而不是单击

时间:2015-12-15 08:58:44

标签: javascript jquery twitter-bootstrap

我想在提交时触发引导模式,而不是在点击时触发,因为它被编程为默认执行。  这是我的表单和触发模态的按钮:

  <form name="signup-form" action="http://formspree.io/davidgeismar@wetennis.fr" id="conversion_form" method="POST">
                            <input id="email-input" class="signup-input" type="email" name="email_address" value="" placeholder="Laisse ton mail et reçois le coupon..." title="Please enter a valid email address." required>
                            <button type="submit" class="submit-btn"data-toggle="modal" data-target="#myModal">GO</button>
                        </form>

这是模态:

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
            </div>
        </div>
      </div>

我按照帖子中的建议尝试了这个:

  $("#myModal").on("show.bs.modal", function(e){
    e.stopPropagation();
  })

但这不起作用。

我应该做的只是在实际提交表单时触发模态。这是在这一堆JS代码之后:

$("#conversion_form").on("submit", function(e){
       e.preventDefault();
       var $this = $(this);
       var email = $('#email-input').val();
       $.ajax({
                url: $this.attr('action'), // Le nom du fichier indiqué dans le formulaire
                method:"POST",
                dataType: "json", // La méthode indiquée dans le formulaire (get ou post)
                data: {message: email}, // Je sérialise les données (j'envoie toutes les valeurs présentes dans le formulaire)
                success: function(data, textStatus, xhr) {
                    if(xhr.status==200)
                        alert('Nous vous tiendrons au courant de nos dernières actu ! \n Wefoot');
                    $('#email-input').val('');
                    // $('#myModal').popover('show');

                }
            });

    })

2 个答案:

答案 0 :(得分:0)

如果您想在表单完成提交过程后显示您的模式,您可以在成功函数中添加此代码:

$("#conversion_form").on("submit", function(e){
   e.preventDefault();
   var $this = $(this);
   var email = $('#email-input').val();
   $.ajax({
            url: $this.attr('action'), // Le nom du fichier indiqué dans le formulaire
            method:"POST",
            dataType: "json", // La méthode indiquée dans le formulaire (get ou post)
            data: {message: email}, // Je sérialise les données (j'envoie toutes les valeurs présentes dans le formulaire)
            success: function(data, textStatus, xhr) {
                if(xhr.status==200)
                    alert('Nous vous tiendrons au courant de nos dernières actu ! \n Wefoot');
                $('#email-input').val('');
                $('#myModal').modal('show'); // Add this and it will open the modal 

            }
        });

});

或者,如果您想在表单提交之前执行此操作,则只需添加

$('#myModal').modal('show');
在ajax调用之前

。您可以在此处找到更多信息:https://stackoverflow.com/a/13183713/2911633

答案 1 :(得分:0)

您需要删除data-toggle="modal" data-target="#myModal"并手动触发模式,您可以在代码中使用此模式

首先将你的模态初始化为false,这样它就不会打开

$('#myModal').modal({ show: false})`

在提交方法中写下代码

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