我只看到了另一个类似的问题(这个(,我不知道如何将它应用到我的页面上。我是网络开发的新手,所以我使用此模板作为联系人表单。您可以在此处查看我的联系人页面: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