3

わかりましたので、単純なフォームのエラーをチェックするために jQuery 検証プラグインを使用しています。エラーの配置を除いて、すべてが機能しています。エラーを含む INPUT の直後にある SPAN 要素にエラー メッセージを配置しようとしています。何らかの理由で、以下のコードは、まったく新しい LABEL 要素のように見えるものにエラー メッセージを配置しています。私がここで間違っていることは何か分かりますか?

私のhtml

    <form action="" id="contact" method="POST">
       <p>
         <label for="name">Name:</label>
         <input type="text" name="name" id="name" class="text proper"/><span class="errMsg"></span>
       </p>
       <p>
         <label for="email">* Email:</label>
         <input type="text" name="email" id="email" class="required email text"/><span class="errMsg"></span>
       </p>
       <p>
         <label for="extra">*Question:</label>
         <textarea name="onlyText" id="onlyText" class=""></textarea><span class="errMsg"></span>
       </p>

       <button type="submit" id="send">Send Now</button>
       <div id="results"></div>
    </form>

私のjQuery

    <script>
      jQuery(document).ready(function($){           
        $.validator.addMethod("regex",function(value, element, regexp) {
         var check = false;
         var re = new RegExp(regexp);
         return this.optional(element) || re.test(value);
        },
          "No special Characters allowed here. Use only upper and lowercase letters (A through Z; a through z), numbers and punctuation marks (. , ; ? ' ' \" -  ~ ! @ $ % ^ & * (     ) _ + / < > { } )"
        );
        $("#contact").validate({
         rules: {
            onlyText:{
              required: true,
              maxlength: 8000,
              regex: /^[0-9A-Za-z\s`~!@$%^&*()+{}|;'",.<>\/?\\-]+$/
            },
            name:{
              required: false,
              maxlength: 75,
              regex: /^[0-9A-Za-z\s`~!@$%^&*()+{}|;'",.<>\/?\\-]+$/
           }
         } , 
          errorPlacement: function(error, element) {
          error.appendTo( element.next() );  //* THIS IS WHERE I AM HAVING TROUBLE WITH
     });
     });
   </script>
4

2 に答える 2

9

手間を省き、オプションerrorElementerrorClassオプションを使用して、プラグインに正しい要素を追加させることができます。

$("#contact").validate({
    errorElement: 'span',
    errorClass: 'errMsg',
    rules: {
            onlyText:{
              required: true,
              maxlength: 8000,
              regex: /^[0-9A-Za-z\s`~!@$%^&*()+{}|;'",.<>\/?\\-]+$/
            },
            name:{
              required: false,
              maxlength: 75,
              regex: /^[0-9A-Za-z\s`~!@$%^&*()+{}|;'",.<>\/?\\-]+$/
           }
         } 
    });
于 2013-10-29T20:21:33.323 に答える
6

jQuery Validation プラグイン ( validate() へのリンク) には、エラー メッセージに使用するタグを指定するオプションがあります。

errorElement: "span"

このオプションを指定しないと、validate()デフォルトでlabel.

于 2013-10-29T20:21:10.927 に答える