出现验证错误时,似乎无法让表单输入保持不变[重复]
Posted
技术标签:
【中文标题】出现验证错误时,似乎无法让表单输入保持不变[重复]【英文标题】:Can't seem to get form input to stay when there's a validation error [duplicate] 【发布时间】:2019-08-16 16:32:08 【问题描述】:我刚刚经历了这个Traversy Media php crashcourse thing 并试图将它实施到我自己的项目中。现在,我基本上是在验证数据,当我点击提交时,输入到字段中的所有信息都会重置并变为空白。在链接的视频中,他谈到了使用 html 中的值来解决问题,到目前为止,它有效。唯一的问题是文本区域总是空白。我不知道为什么它适用于其他所有东西,但不适用于那个特定元素。我错过了什么?
<?php
// Message Vars
$msg = '';
$msgClass = '';
// Check for Submit
if(filter_has_var(INPUT_POST, 'submit'))
// get form data
$name = htmlspecialchars($_POST['name']);
$cname = htmlspecialchars($_POST['cname']);
$email = htmlspecialchars($_POST['email']);
$message = htmlspecialchars($_POST['message']);
// check required fields
if(!empty($email) && !empty($name) && !empty($message))
// passed
//check emails
if(filter_var($email, FILTER_VALIDATE_EMAIL)=== false)
// failed
$msg = 'Please use a valid email';
$msgClass = 'error-fail';
else
//Passed
echo'passed';
else
// Fail
$msg = 'Please fill in all the required fields';
$msgClass = 'error-fail';
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Ravenfell</title>
<link rel="stylesheet" href="./css/main.css" />
<link rel="stylesheet" href="./css/contact.css" />
</head>
<body>
<section id="sec5" class="lt-bg dk-txt desktop tablet">
<div class="content-wrapper flex-container">
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" class="form-container">
<div class="form-head">
<h2>Connect with us</h2>
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Exercitationem, expedita.</p>
</div>
<!-- Fullname -->
<p class="col1">Full Name:</p>
<input type="text" name="name" placeholder="Your Name" class="col2" value="<?php echo isset($_POST['name']) ? $name : ''; ?>">
<!-- Company Name -->
<p class="col1">Company Name <span class="optional">(optional)</span>:</p>
<input type="text" placeholder="Company Name" name="cname" class="col2" value="<?php echo isset($_POST['cname']) ? $cname : ''; ?>">
<!-- email -->
<p class="col1">Email:</p>
<input type="email" name="email" placeholder="example@company.com" class="col2" value="<?php echo isset($_POST['email']) ? $email : ''; ?>">
<!-- Message -->
<p class="col1">Message:</p>
<textarea name="message" cols="30" rows="10" placeholder="Message" value="<?php echo isset($_POST['message']) ? $message : ''; ?>"></textarea>
<!-- Button and Errors -->
<?php if($msg != ''): ?>
<div class="alert <?php echo $msgClass ?>"><?php echo $msg ?></div>
<?php endif; ?>
<button type="submit" name="submit" class="submit-btn">Submit →</button>
</form>
</div>
</section>
</body>
</html>
【问题讨论】:
“我错过了什么?” -textarea
没有 value
属性。
将您的文本区域更改为<textarea name="message" cols="30" rows="10" placeholder="Message"><?php echo isset($_POST['message']) ? $message : ''; ?></textarea>
【参考方案1】:
textarea 没有价值。将您的文本区域更改如下:
<textarea name="message" cols="30" rows="10" placeholder="Message"><?php echo isset($_POST['message']) ? $message : ''; ?></textarea>
【讨论】:
对!我没有意识到这一点。解决了这个问题。谢谢!以上是关于出现验证错误时,似乎无法让表单输入保持不变[重复]的主要内容,如果未能解决你的问题,请参考以下文章