【问题标题】:How do you throw form error on page load after returning from php validation?从 php 验证返回后,如何在页面加载时引发表单错误?
【发布时间】:2020-12-25 15:18:23
【问题描述】:

我有一个简单的表格:

<?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" 属性。但是,除了弹出错误消息工具提示之外,一切正常。

现在表单只是一个简单的演示表单,但是我的表单有比这个更多的字段。

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript html forms dom


    【解决方案1】:

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

    解决方法是同时使用onfocus和reportValidity。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 2013-11-18
      • 2018-02-18
      • 2019-12-27
      • 2015-03-18
      • 1970-01-01
      • 2015-04-09
      • 1970-01-01
      相关资源
      最近更新 更多