从php验证返回后,如何在页面加载时引发表单错误?

问题描述

我有一个简单的表格:

<?php $final_auto="required" ?>
<form name="Form" action="mydomain.com/form.php?action=send" method="post">
<textarea name="final_thoughts" <?echo $final_auto; ?>><?php echo $final_thoughts; ?></textarea>
<input type="submit" name="submit" value="Send Message" />
</form>

您可以看到textarea是否为空,这将引发错误。但是,这是在客户端完成的,现在提交表单后,我需要在服务器端仔细检查:

if (isset($HTTP_POST_VARS['final_thoughts']) && (!empty($HTTP_POST_VARS['final_thoughts']))) {
$final_thoughts = tep_db_prepare_input(isset($HTTP_POST_VARS['final_thoughts']));
}else{
$final_auto = "autofocus required aria-invalid=\"true\"";
}

因此,我们检查发布的表单数据$ HTTP_POST_VARS ['final_thoughts']是否存在值。 如果有值,则将其存储在变量$ final_thoughts中。

现在这是我需要帮助的地方。 如果没有值,那么我们将在$ final_auto属性中存储自动对焦的字段(因此,在重新加载表单时,它将自动转到该字段),再次保持它为必填项。

所有这些都有效,我不知道是何时重新加载表单,并且它自动聚焦到该字段,我希望它使用!抛出默认错误消息工具提示。图标图像。

根据我的阅读,您可以添加aria-invalid =“ true”属性。但是,除了弹出错误消息工具提示外,所有其他操作都可以。

现在,该表单只是用于演示的简单表单,但是我的表单具有的字段远远超过此表单。

任何帮助都将是有益的。

解决方法

在搜索了不同的关键字并深入了几个解释之后,我最终将2和2放在一起。

解决方案是一起使用onfocus和reportValidity。

$final_auto = "autofocus required onfocus=\"this.reportValidity()\"";

这会将您带到表单上的字段,然后将焦点放在该字段上,然后触发onfocus事件,该事件被设置为触发错误,就像您单击了提交按钮而不提交一样,它所做的就是检查仅限字段。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...