不要"离开这一页"在提交联系表格时

Do not "Leave this page" when submitting on contact form

本文关键字:quot 联系 表格 提交 离开 不要 一页      更新时间:2023-09-26

我只看到了另一个类似的问题(这个(,我不知道如何将它应用到我的页面上。我是网络开发的新手,所以我使用此模板作为联系人表单。您可以在此处查看我的联系人页面:http://mikeyaworski.com/contact_files/

问题是,当你提交你的消息时,页面会重新加载(我认为(。我使用window.onbeforeunload功能在用户离开页面时提醒他们。但当他们按下提交按钮时,警报就会出现,因为他们显然是在"离开页面"。这不是我想要的。我希望页面不重新加载,这样警报就不会弹出。

旁注:提交后,字段大小会发生变化。有人知道为什么吗?

这不是我的代码,所以我不确定是什么导致页面重新加载以及如何修复

这是索引页(我认为相关部分(:

<?PHP
require_once("./include/fgcontactform.php");
$formproc = new FGContactForm();
$formproc->AddRecipient('mail@mikeyaworski.com'); //<<---Put your email address here
$formproc->SetFormRandomKey('CnRrspl1FyEylUj');
if(isset($_POST['submitted'])) {
    if($formproc->ProcessForm()) {
        echo "<script type='text/javascript'>alert('Sent!');</script>";
    }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head>
      <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
      <title>Contact - mikeyaworski</title>
      <link rel="STYLESHEET" type="text/css" href="contact.css" />
      <script type='text/javascript' src='scripts/gen_validatorv31.js'></script>
      <style type="text/css">
        label {
            color: white;
        }
        textarea {
            max-width: 400px; 
            max-height: 200px;
        }
        input#name, input#email, input#subject {
            height: 18px;
            width: 220px;
        }
      </style>
</head>
<body style="background-color:#101010;">
    <script type="text/javascript">
        window.onbeforeunload = function() {
            var name = document.getElementById('name').value;
            var email = document.getElementById('email').value;
            var subject = document.getElementById('subject').value;
            var message = document.getElementById('message').value;
            if (name == "" && email == "" && subject == "" && message == "") { // do nothing (all blank fields)
            }
            else {
                return 'Your changes will not be saved.'; // stop them, they have unsaved content
            }
        };
    </script>
    <!-- Form Code Start -->
    <form id='contactus' action='<?php echo $formproc->GetSelfScript(); ?>' method='post' accept-charset='UTF-8'>
        <fieldset>
            <legend style="color:white;">Contact</legend>
            <input type='hidden' name='submitted' id='submitted' value='1'/>
            <input type='hidden' name='<?php echo $formproc->GetFormIDInputName(); ?>' value='<?php echo $formproc->GetFormIDInputValue(); ?>'/>
            <input type='text'  class='spmhidip' name='<?php echo $formproc->GetSpamTrapInputName(); ?>' />
            <div><span class='error'><?php echo $formproc->GetErrorMessage(); ?></span></div>
            <div class='container'>
                <label for='name' >Your Name: </label><br/>
                <input type='text' name='name' id='name' maxlength="50" /><br/> <!-- value='<?php //echo $formproc->SafeDisplay('name') ?>' -->
                <span id='contactus_name_errorloc' class='error'></span>
            </div>
            <div class='container'>
                <label for='email' >Email Address:</label><br/>
                <input type='text' name='email' id='email' maxlength="50" /><br/> <!-- value='<?php //echo $formproc->SafeDisplay('email') ?>' -->
                <span id='contactus_email_errorloc' class='error'></span>
            </div>
            <div class='container'>
                <label for='subject' >Subject:</label><br/>
                <input type='text' name='subject' id='subject' maxlength="50" /><br/><!-- value='<?php //echo $formproc->SafeDisplay('subject') ?>' -->
                <span id='contactus_subject_errorloc' class='error'></span>
            </div>
            <div class='container'>
                <label for='message' >Message:</label><br/>
                <textarea rows="10" cols="50" name='message' id='message'></textarea> <!-- <?php //echo $formproc->SafeDisplay('message') ?> -->
                <span id='contactus_message_errorloc' class='error'></span>
            </div>
            <div class='container'>
                <input type='submit' name='Submit' value='Submit' />
            </div>
        </fieldset>
    </form>
    <!-- client-side Form Validations:
    Uses the excellent form validation script from JavaScript-coder.com-->
    <script type='text/javascript'>
    // <![CDATA[
        var frmvalidator  = new Validator("contactus");
        frmvalidator.EnableOnPageErrorDisplay();
        frmvalidator.EnableMsgsTogether();
        frmvalidator.addValidation("name","req","Please provide your name.");
        frmvalidator.addValidation("email","req","Please provide your email address.");
        frmvalidator.addValidation("email","email","Please provide a valid email address.");
        frmvalidator.addValidation("subject","req","Please provide the subject.");
        frmvalidator.addValidation("message","req","Please provide your message.");
        frmvalidator.addValidation("message","maxlen=2048","The message is too long (more than 2KB).");
    // ]]>
    </script>
</body>
</html>

我认为这与$formproc = new FGContactForm();有关。因此,如果您需要查看文件fgcontactform.php中的函数,请告诉我。

更新

<input type="submit" name="Submit" value="Submit" onclick="window.onbeforeunload = null;">

如果单击提交,则将处理程序window.onbeforeunload设置为null

所有表单都会重新加载一个页面。如果你不想在没有重新加载的情况下对数据进行POST(出于安全考虑,这是不建议的(,你必须研究AJAX。

http://www.w3schools.com/php/php_ajax_php.asp