1

私のページには次のフォームがあります。

<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場合、フォームを送信すると、questionTextidを持つフィールドのみが検証され、残りは検証されませんでした。

今、私は私のフォームのすべてに一意の名前を追加しました、そしてすべてがうまくいくので、ここに私の3つの質問がありますinputidquestionAnswer

  1. 属性questionTextがない場合でも、jqueryバリデーターはどのように検証されますかname
  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>
4

1 に答える 1

1

1.名前属性がない場合でも、jqueryバリデーターがquestionTextを検証したのはどうですか

要素にはクラスrequiredが含まれているため、jQuery検証で取得されます。

2.名前属性は、検証する要素を決定するためにjqueryバリデーターによって内部的に使用されますか?

はい、そうです。

3.なぜ、questionAnswer入力のある行が複数ある場合、どの行を空のままにしても、最初の行の近くにエラーメッセージが表示されるのですか?

jQuery validateは、同じ名前の複数の要素をネイティブに処理できないため(ただし、これを処理するプラグインバリデーターが存在する場合があります)、エラーは常に指定された名前のドキュメントの最初の要素から発生したものと見なされるため、エラーをそこに配置します。

于 2012-08-28T13:44:45.697 に答える