簡體   English   中英

從php驗證返回后,如何在頁面加載時拋出表單錯誤?

[英]How do you throw form error on page load after returning from php validation?

我有一個簡單的表格:

<?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 事件,該事件被設置為觸發錯誤,就好像您在沒有提交的情況下點擊提交按鈕一樣,它所做的只是檢查該字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM