javascript - 无法在放大的弹出窗口内使用 AJAX 提交表单

标签 javascript jquery ajax magnific-popup

我正在模态中提交表单(使用 magnific-popup 插件制作),但遇到问题。每次加载页面时都会显示弹出窗口,我可以使用 AJAX 提交此表单。但是如果我想在单击按钮后加载模态,我无法使用 AJAX 提交它。有一个工作和不工作的代码示例。只是有一些细微的差别。

不工作:

<script type="text/javascript">
$(document).ready(function() {
    // jQuery Validation
    $("#sleva").validate({
        // if valid, post data via AJAX
        submitHandler: function(form) {
                $.post("/mail.php", { email: $("#email2").val(), sleva: "ano" }, function(data) {});
        },
        // all fields are required
        rules: {
            email2: {
                required: true,
                email: true
            }
        }
    });

    $(".sleva-popup").magnificPopup({
      items: {
        src: '<div class="white-popup">' +
        '<form id="sleva" action="/mail.php" method="post">'+
        '<input type="text" name="email2" id="email2" placeholder="Váše e-mailová adresa" style="padding: 6px;" />' +
        '<input type="submit" name="Submit" class="ziskej_slevu" value="Potvrdit"></div>' +
        '</form>' +
        '</div>',
        type: 'inline'
      },
      closeBtnInside: true
    });
});
</script>

工作:

<script type="text/javascript">
$(document).ready(function() {
    // jQuery Validation
    $("#sleva").validate({
        // if valid, post data via AJAX
        submitHandler: function(form) {
        $.post("/mail.php", { email: $("#email2").val(), sleva: "ano" }, function(data) {});
        },
        // all fields are required
        rules: {
            email2: {
                required: true,
                email: true
            }
        }
    });
});

$.magnificPopup.open({
  items: {
    src: '<div class="white-popup">' +
    '<form id="sleva" action="/mail.php" method="post">'+
    '<input type="text" name="email2" id="email2" placeholder="Váše e-mailová adresa" style="padding: 6px;" />' +
    '<input type="submit" name="Submit" class="ziskej_slevu" value="Potvrdit"></div>' +
    '</form>' +
    '</div>',
    type: 'inline'
  },
  closeBtnInside: true
});
</script>

最佳答案

在调用 $(".sleva-popup").magnificPopup({. ...

当您的表单已加载时,您的 document.ready 函数会在开始时对其进行验证。 否则,您必须将表单插入页面后手动执行此操作。

关于javascript - 无法在放大的弹出窗口内使用 AJAX 提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27205436/

相关文章:

ajax - 将表单元素聚合到对象中?

javascript - 如何使 $.load() 执行通过 AJAX 以 HTML 形式返回的脚本?

javascript - MongoDB .find 在 shell 中有效,但在 js 中无效

受苹果启发的 jQuery SWITCH 不会约束圆 Angular

javascript - JavaScript 中的鼠标滚轮、滚轮和 DOMMouseScroll

javascript - Css float :right 100% Height, 图片底部对齐

html - 使用可变高度的左浮动 div 标签制作漂亮的、可缩放的行

php - 实现自动提示的方法

javascript - 签名板和dompdf

javascript - 一起使用 getElementById 和 getElementsByTagName