防止表单“提交时”加载空白页

问题描述 投票:0回答:3

我已经看到了一些类似的问题,但是找不到任何相关的问题。

我有一个基本的表单来捕获用户电子邮件,我想要的是表单提交时不会加载空白页面,而是只需再次重定向回空白表单即可。

<?php
if ($thanks === false) {
    echo form::open('', array('id'=>'footer_email'));
    echo '<div id="footer_box">';

    echo '<div class="footer_box_left">';
    echo form::input('form[email]', $val, array('class'=>'required', 'id'=>'email', 'placeholder'=>'Enter email address'));
    echo '</div>';

    echo form::submit('btnSubmit', 'Sign Up', array('id'=>'btnSubmit', 'class'=>'footer_box_submit'));
    echo '</div>';

    echo form::close();

    } 
?>

$(document).ready(function () {

var validator = $("#footer_email").validate({
    errorLabelContainer: $("#footer_email div.error"),
    meta: "validate",
    invalidHandler: function (form, validator) {
        alert("Please enter your email address first.");
    },
    submitHandler: function (form) { // on submit
        if ($(form).valid()) 
        form.submit();
        alert("Thank you for sharing your email address. \nKarina");
        return false;
      }
   });

});

谁能告诉我我要去哪里了/我最好使用ajax实现这一目标吗?

javascript php jquery form-submit
3个回答
1
投票

你可以这样做:

<?php
if ($thanks === false) {
   echo form::open('', array('id'=>'footer_email'));
   echo '<div id="footer_box">';

   echo '<div class="footer_box_left">';
   echo form::input('form[email]', $val, array('class'=>'required', 'id'=>'email', 'placeholder'=>'Enter email address'));
   echo '</div>';

   echo form::submit('btnSubmit', 'Sign Up', array('id'=>'btnSubmit', 'class'=>'footer_box_submit'));
   echo '</div>';

   echo form::close();
} else {
   echo '<script>alert("Thank you for sharing your email address. \nKarina");</script>';
   echo form::open('', array('id'=>'footer_email'));
   echo '<div id="footer_box">';

   echo '<div class="footer_box_left">';
   echo form::input('form[email]', $val, array('class'=>'required', 'id'=>'email', 'placeholder'=>'Enter email address'));
   echo '</div>';

   echo form::submit('btnSubmit', 'Sign Up', array('id'=>'btnSubmit', 'class'=>'footer_box_submit'));
   echo '</div>';

   echo form::close();

} 
?>

0
投票

由于您正在使用

form.submit();

它使通常的表单提交就像您单击“发送”按钮一样。 您要做的是通过Ajax发送序列化的表格,

var formData = $(form).serialize();

$.post('[HERE YOUR SUBMIT TARGET URL]', formData, function (success){
  ///Redirect to empty form, or clear actual form
});

0
投票

使用Ajax保持快速并且没有太多刷新

$(document).ready(function () {

    var validator = $("#footer_email").validate({
        errorLabelContainer: $("#footer_email div.error"),
        meta: "validate",
        invalidHandler: function (form, validator) {
            alert("Please enter your email address first.");
        },
        submitHandler: function (form) { // on submit
            if ($(form).valid()) {
     $.ajax({
                type: "POST",
                url: url,
                data: $(form).serialize()
            }).done(function (data) {
               alert("Thank you for sharing your email address. \nKarina");
 $(form).reset();

            }).fail(function () {
                 alert("Sorry Try again. \nKarina");
            });
    }

            return false;
          }
       });

    });
© www.soinside.com 2019 - 2024. All rights reserved.