【问题标题】:Add A Class To An Input Using PHP使用 PHP 将类添加到输入
【发布时间】:2020-09-18 07:16:58
【问题描述】:

我一直在研究一个使用 PHP 表单验证的表单。我的 CSS 文件中还有一个类,应该添加到每个无效输入中。您可以查看 JSFiddle here。我尝试添加的类仅在输入返回无效时可见。类名是.invalid,您可以在 CSS 中找到它。提前致谢,我们将不胜感激。

【问题讨论】:

  • 我不确定,但浏览器也可能通过您的 html 标记进行表单验证。如果表单对浏览器无效(例如,必填字段为空),则提交事件将永远不会到达您的 php 后端,因为浏览器检测到无效的表单......所以这些类不会被添加,因为 php 从未收到请求。
  • @mfink 谢谢!那么,我应该将novalidate 属性添加到form 元素吗?那么,HTML 没有添加自己的验证?
  • 我对@9​​87654325@ 属性不太熟悉,但试一试?可能从表单元素中删除任何验证或required 属性。
  • @mfink 再次感谢。但即使在删除 HTML 验证后,表单也将使用 PHP 进行验证,没有问题。唯一的问题是,当输入无效时,我希望该输入添加一个 .invalid 类(该类在 CSS 中描述为具有深红色边框和红色背景)。这就是为什么我想知道是否有办法使用 PHP 添加类。
  • 请在问题本身中包含所有相关代码。

标签: php html css forms validation


【解决方案1】:

假设有两个输入,并且您想通过 PHP 进行验证,验证过程将在提交表单后进行

HTML

<input type="text" title="First Name" aria-placeholder="First Name" id="name" required />
<input type="text" title="Last Name" aria-placeholder="Last Name" id="name" required />

PHP

for($i = 0;$i < sizeof($_POST);$i++){
if($_POST[$i] == null || $POST[$i] == ""){
echo "Please insert :".$_POST[$i];
 }
}

注意: PHP会在表单提交后进行验证,提交前需要使用javascript进行验证。

【讨论】:

  • 那么这会将.invalid的类添加到无效输入中,还是只是说“请插入:...”?
  • PHP 无法为您添加类,因为您需要 javascript,因为在处理表单时,PHP 会在表单提交后验证表单。
  • 看到你的问题告诉你需要 php 来完成这项工作,但它不能因为 php 是服务器端语言而 javascript 是客户端,因此它只能由 javascript 完成。
  • 如果我的回答对您有帮助,请您接受它作为答案吗?
  • 非常感谢很高兴为您提供帮助:)
【解决方案2】:

如果字段无效,您可以让 PHP 在输入中添加一个类,但您可能需要调整方法。

如果您想使用表单 POST 方法(正如您所拥有的那样)进行维护,您需要将验证代码移动到呈现视图的同一页面上进行处理(最简单的方法是将其放在同一页面内)。如果您想保持代码整洁,您仍然可以使用并包含一个单独的文件来拉入您想要用于验证的 PHP 类或其他系统。这是一个例子:

<?php
// filter_input returns null or false if invalid.
$firstname = filter_input(INPUT_POST, 'firstname', FILTER_SANITIZE_STRING);
?>

<form method="POST" action="<?php echo getenv('REQUEST_URI'); ?>">
<input type="text" name="firstname" value="<?php echo $firstname; ?>" class="<?php echo $firstname ? '' : 'invalid'; ?>" />
<input type="submit" name="submit" value="Submit" />
</form>

但是,我会推荐一种更强大的方法,即使用 AJAX 处理程序来提交您的表单。这将为您的用户提供更好的体验,并且还允许您巧妙地将表单处理与视图完全分开。该解决方案有点超出了这个问题的范围,但最终你会让你的 PHP AJAX 处理程序返回关于提交是否有效或哪些字段无效的信息,并让 javascript 将你的 invalid 类添加到字段中出错了。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-03
  • 1970-01-01
  • 2019-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多