jquery验证器 - 名称属性和嵌套标签

时间:2012-08-28 13:40:53

标签: jquery validation jquery-validate

我的页面中有这个表单:

<form:form id="addUnitForm" method="POST" modelAttribute="questionUnit">
    <fieldset>
        <label for="questionText">Question</label> <input type="text"
            id="questionText" class="required" value="${questionContent[0] }" /><br/>
       Answers
        <c:forEach var="i" begin="1" end="${questionContentSize-1 < 0 ? 0 : questionContentSize-1 }">
            <div id="answerRow">
                <input type="text" id="questionAnswer" name="questionAnswer${i }" class="required" value="${questionContent[i] }"/>
                <input type="checkbox" id="questionAnswerCheckbox" ${answerContent.contains(questionContent[i]) ? 'checked="checked"' : ''}/> 
                <input type="button" id="removeAnswer" value="x" />
            </div>
        </c:forEach>
    </fieldset>
    <input type="submit" value="OK" />
    <input type="button" value="Add answer" id="Add_answer" />
</form:form>

现在,当我有相同的表单,但没有名称属性(只有id),并且每个input元素具有相同的id属性值而没有name属性,当我提交表单只有questionText id得到验证的字段,其余部分未经过验证。

现在,我在表单中添加了input id questionAnswer的每个questionText的唯一名称,一切正常,所以这是我的3个问题:

  1. 如果没有name属性,jquery验证器验证name是怎么回事
  2. 是jquery验证器在内部使用的questionAnswer属性,用于决定应该验证哪些元素?
  3. 为什么当我有一行 <fieldset> <label for="questionText">Question</label> <input type="text" value="" class="required valid" id="questionText"><br> Answers <div id="answerRow"> <input type="text" class="required valid" id="questionAnswer" name="questionAnswer0"> <input type="checkbox" id="questionAnswerCheckbox"> <input type="button" value="x" id="removeAnswer" class="ui-button ui-widget ui-state-default ui-corner-all" role="button" aria-disabled="false"> </div> <div id="answerRow"> <input type="text" class="required valid" id="questionAnswer" name="questionAnswer1"> <input type="checkbox" id="questionAnswerCheckbox"> <input type="button" value="x" id="removeAnswer" class="ui-button ui-widget ui-state-default ui-corner-all" role="button" aria-disabled="false"> </div> </fieldset> 输入时,第一行附近有一条错误信息,无论我留空哪一行?
  4. 编辑:这是浏览器的表单代码

    {{1}}

1 个答案:

答案 0 :(得分:1)

  

1.如果没有名称属性,jquery验证器甚至会验证questionText

因为元素上有类required,所以jQuery验证了它。

  

2.是jquery验证器在内部使用的name属性,用于决定应该验证哪些元素?

是的。

  

3.为什么当我有一行带有questionAnswer输入时,第一行附近有一条错误信息,无论我留空哪一行?

因为jQuery validate不能原生地处理具有相同名称的多个元素(尽管可能有一个插件验证器来处理这个)所以它总是假设错误来自文档中具有指定名称的第一个元素,所以把它放在错误。