问题描述
我有一个简单的表格:
<?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事件,该事件被设置为触发错误,就像您单击了提交按钮而不提交一样,它所做的就是检查仅限字段。