我有一个表单,如果没有正确填写,我想在每个输入上显示错误消息。
以下是目前的代码:
HTML:
<form id="contactForm" action="contact.php" method="post">
<div>
<input type="text" name="name" id="name" placeholder="Your Name" maxlength="65" tabindex="1">
<label for="name">Name</label>
<span class="error"><?php include 'contact.php'; echo "$nameErr";?></span>
</div>
<div>
<input type="email" name="_replyto" id="email" placeholder="Your Email" maxlength="30" tabindex="2">
<label for="email">Email</label>
<span class="error"><?php include 'contact.php'; echo "$emailErr";?></span>
</div>
<div>
<textarea name="message" id="message" rows="10" placeholder="Your Message..." maxlength="1000" tabindex="3" ></textarea>
<label for="message">Your Message</label>
<span class="error"><?php include 'contact.php'; echo "$commentErr";?></span>
</div>
<div>
<input type="submit" value="Send" tabindex="4">
</div>
</form>
PHP:
<?php
// Check for form submission:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
/* The function takes one argument: a string.
* The function returns a clean version of the string.
* The clean version may be either an empty string or
* just the removal of all newline characters.
*/
function spam_scrubber($value) {
// List of very bad values:
$very_bad = array('to:', 'cc:', 'bcc:', 'content-type:', 'mime-version:', 'multipart-mixed:', 'content-transfer-encoding:');
// If any of the very bad strings are in
// the submitted value, return an empty string:
foreach ($very_bad as $v) {
if (stripos($value, $v) !== false) return '';
}
// Replace any newline characters with spaces:
$value = str_replace(array( "\r", "\n", "%0a", "%0d"), ' ', $value);
// Return the value:
return trim($value);
} // End of spam_scrubber() function.
// Clean the form data:
$scrubbed = array_map('spam_scrubber', $_POST);
$nameErr = $emailErr = $commentErr = "";
$name = $email = $comment = "";
// Form validation:
if (empty($scrubbed['name'])){
$nameErr = "Please tell me your name";
}
} // End of main isset() IF.
?>
我在html中有一个包含PHP文件变量的span。如果字段未完成,则该变量用于显示错误消息。但是,如果我点击发送时没有填写任何字段,它只会转到空白页面。这个空白页面是contact.php。我希望它留在contact.html上并显示错误。
以上代码目前仅验证名称字段。
对此的任何帮助都将受到高度赞赏。
感谢。
答案 0 :(得分:1)
您收到一个空白页面,因为表单正在提交。在验证完成之前,您需要阻止它提交。
在JavaScript中,使用onsubmit="return validateForm()"
。如果字段有效,则使此函数返回true,否则返回false,并且在那里可以设置错误跨度的内容。
所以,
<form id="contactForm" action="contact.php" onsubmit="return validateForm()" method="post">
,您需要编写validateForm
函数。
这应该是一个好的开始!