【问题标题】:jquery validator - name attribute and nested tagsjquery 验证器 - 名称属性和嵌套标签
【发布时间】:2012-08-28 13:40:52
【问题描述】:

我的页面中有这个表格:

<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 已验证,其余未验证。

现在,我在表单中为每个inputquestionAnswer 添加了唯一名称,一切正常,所以这是我的三个问题:

  1. 怎么样,即使没有name 属性,jquery 验证器也验证了questionText
  2. name 属性是否由 jquery 验证器在内部用于决定应验证哪些元素?
  3. 为什么,当我有超过一行的 questionAnswer 输入时,无论我将哪一行留空,第一行附近都会出现错误消息?

编辑:这是来自浏览器的表单代码

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

【问题讨论】:

    标签: jquery validation jquery-validate


    【解决方案1】:

    1. 怎么样,即使没有名称属性,jquery 验证器也会验证 questionText

    因为元素上有 required 类,jQuery 验证会选择它。

    2.jquery验证器内部使用name属性来决定应该验证哪些元素?

    是的。

    3.为什么,当我有超过一行的 questionAnswer 输入时,无论我将哪一行留空,第一行附近都会出现错误消息?

    因为 jQuery validate 本身不能处理多个同名元素(尽管可能有一个插件验证器来处理这个问题),所以它总是假设错误来自文档中具有指定名称的第一个元素,所以将那里有错误。

    【讨论】:

    • 关于第一个,我还在questionAnswer 字段上设置了课程,但它们没有经过验证(正如我所说)。关于第二个,当我为元素分配了唯一名称时,会在第一行出现错误消息。
    • 能否请您发布呈现时的 HTML,而不是模板格式。
    • 似乎当我确保ids 的questionAnswer 输入都是唯一的时,错误消息出现在适当的位置,但有点不一致。首先我需要名字,现在我需要身份证
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多