簡體   English   中英

PHP表單驗證(必填字段)

[英]PHP Form Validation (Required Fields)

請閱讀下面的編輯2

我正在動態生成測驗表格。 問題和答案來自MySQL數據庫。 窗體上的控件類型為復選框,單選按鈕和文本框。

我的驗證需要:1)檢查是否為所有相關問題選擇了一個單選按鈕(默認情況下未選擇任何一個)。 2)檢查所有相關問題,至少選中一個復選框。 3)檢查是否在文本框中輸入了任何內容。

我找到了有關如何執行此操作的幾個示例,但是由於我是動態生成表單的,因此遇到了問題。

我用於表單生成的算法是:

Loop to get Questions from Database
{
  Store "Type" of Question in variable X (Type = Single Choice 'c' (Radio button), Multi Choice 'm' (Checkbox), User Entry 'u' (Textbox)

  Loop to get Answers for current Question
   {
     Switch(X)
     {
       case 'c'
         Load each answer into separate radio buttons, Name = Question number.
       break
       case 'm'
         Load each answer into separate checkboxes, Name = Question number.
       break
       case 'u'
         Place textbox, Name = Question number.
       break
      }
    }
}

然后將數據提交並存儲在MySQL中。

我試圖將POST中的所有表單元素加載到數組中,並檢查它們是否具有值,但是隨后我意識到這將檢查每個單獨的元素是否具有值,這不是我想要的。

最好的方法是什么? 任何正確方向的指針都將不勝感激!

編輯2:

我設法使用jQuery.validate解決了單選按鈕和文本框的問題。 我以頁面的源代碼為例。 但是,它不適用於復選框! (我什至將他們用於復選框的源代碼直接復制到了我的頁面中,它仍然無法使用。只有第一個復選框突出顯示,單擊其他復選框並不會刪除驗證。

這是我從他的網站復制的代碼段。

<fieldset>
            <legend>Spam</legend>
            <label for="spam_email">
                <input type="checkbox" class="checkbox" id="spam_email" value="email" name="spam[]" required minlength="2">
                Spam via E-Mail
            </label>
            <label for="spam_phone">
                <input type="checkbox" class="checkbox" id="spam_phone" value="phone" name="spam[]">
                Spam via Phone
            </label>
            <label for="spam_mail">
                <input type="checkbox" class="checkbox" id="spam_mail" value="mail" name="spam[]">
                Spam via Mail
            </label>
            <label for="spam[]" class="error">Please select at least two types of spam.</label>
        </fieldset>

我在這里想念什么嗎? 還有其他我應該復制的內容嗎? (我的頁面中也包含了兩個包含的文件)

您正在使用jQuery,請嘗試以下操作(適用於單選框和復選框):

var isSpamValid = $('input[name=spam\\[\\]]:checked').length > 0;

暫無
暫無

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

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