2013-10-29 109 views
2

好吧,我使用jQuery验证插件来检查简单表单上的错误。除错误位置外,一切正常。我试图让我的错误消息放置在包含错误的INPUT后面的SPAN元素中。出于某种原因,下面的代码将错误消息放在似乎是一个全新的LABEL元素的位置。任何想法我在这里做错了吗?jQuery验证错误信息放置

我的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`[email protected]$%^&*()+{}|;'",.<>\/?\\-]+$/ 
      }, 
      name:{ 
       required: false, 
       maxlength: 75, 
       regex: /^[0-9A-Za-z\s`[email protected]$%^&*()+{}|;'",.<>\/?\\-]+$/ 
      } 
     } , 
      errorPlacement: function(error, element) { 
      error.appendTo(element.next()); //* THIS IS WHERE I AM HAVING TROUBLE WITH 
    }); 
    }); 
    </script> 
+0

你在你的JavaScript中的一些错误,所以我在这里尝试一些清理:HTTP ://jsfiddle.net/XNQVr/ – Robb

回答

8

你能避免麻烦和使用errorElementerrorClass选项有插件添加正确的元素对你:

$("#contact").validate({ 
    errorElement: 'span', 
    errorClass: 'errMsg', 
    rules: { 
      onlyText:{ 
       required: true, 
       maxlength: 8000, 
       regex: /^[0-9A-Za-z\s`[email protected]$%^&*()+{}|;'",.<>\/?\\-]+$/ 
      }, 
      name:{ 
       required: false, 
       maxlength: 75, 
       regex: /^[0-9A-Za-z\s`[email protected]$%^&*()+{}|;'",.<>\/?\\-]+$/ 
      } 
     } 
    }); 
+0

非常感谢。你不知道我一直试图弄清楚多久! – Austin

+0

@奥斯汀不客气,不要忘记注册/接受这个答案,如果它对你有帮助 –

6

jQuery的验证插件(link to validate()),让您可以指定要使用的错误信息是什么标签的选项:

errorElement: "span" 

没有指定此选项,validate()将默认为label