PHP表单验证(必填字段)

时间:2013-09-17 15:48:09

标签: javascript php jquery forms

请阅读下面的编辑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为单选按钮和文本框解决了这个问题。我使用this页面的源代码作为示例。但是,它不适用于复选框! (我甚至将他们用于复选框的源代码直接复制到我的页面中,它仍然不起作用。只有第一个复选框突出显示,单击其他复选框不会删除验证。

这是我从他的网站上复制的代码段。

<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>

我在这里遗漏了什么吗?还有什么我应该复制的东西吗? (我的页面中也包含了包含的文件)

1 个答案:

答案 0 :(得分:0)

您正在使用jQuery,试试这个(适用于无线电和复选框):

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