2012-12-18 75 views
2

我试图使用规则/消息集的jQuery验证,似乎无法让它工作。对于JQuery而言,新的Relativeny是很重要的,所以如果这是一个基本的问题,请道歉我试图使用document.forms [0]而不是表单ID。它适用于简单验证,其中该字段具有class =“required”,但如果我尝试引入规则则不适用。任何帮助不胜感激。这里是代码:JQuery表单验证规则语法

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
       "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    <script type="text/javascript" src="http://jzaefferer.github.com/jquery-  validation/jquery.validate.js"></script> 
    <script> 
    $(document).ready(function(){ 
    $(document.forms[0]).validate({ 
    rules: { 
     cname: { 
     required: true, 
    } 
    }, 
    messages: { 
     cname: "Please enter a valid Name." 
    }, 
    }); 
    }); 
    </script> 

</head> 
<body> 


<form class="cmxform" id="commentForm" method="get" action=""> 
<fieldset> 
    <legend>A simple comment form with submit validation and default messages</legend> 
    <p> 
    <label for="cname">Name</label> 
    <em>*</em><input id="cname" name="name"/> 
    </p> 

    <p> 
    <input class="submit" type="submit" value="Submit"/> 
    </p> 
</fieldset> 
</form> 
</body> 
</html> 
+0

OT,但是'$(document.forms [0])'可以很容易的是'$( '形式:第一')' – Jamiec

+1

尝试把'name'属性为'cname'为好。我不记得验证器是否查找'id'或'name'。 – Jack

+0

作为上面的评论它的名称:) http://jsfiddle.net/peGF3/ –

回答

2

首先,您可以将您的表单定位为其id,#commentForm。其次,问题的根本原因在于您通过其id属性错误地将input字段定位到该字段。但是,.validate()插件正在寻找name属性,在您的情况下,它也恰好是"name"。我在下面的示例中更改了name属性的值,只是为了更清楚一点。

的jQuery:

$(document).ready(function(){ 
    $('#commentForm').validate({ 
     rules: { 
      username: { 
       required: true 
      } 
     }, 
     messages: { 
      username: "Please enter a valid Name." 
     } 
    }); 
}); 

HTML:

<form class="cmxform" id="commentForm" method="get" action=""> 

    <input type="text" id="cname" name="username" /> 

    .... 

Working DEMO:

http://jsfiddle.net/egdEn/

See the online documentation for more info.

+0

谢谢@Sparky。 – nelsie

+0

这就是为什么我总是让我的名字和身份证相同的单词,以防我的记忆失败 – Brad

2

我想我会回答这个问题,因为我的评论是正确的。

尝试将name属性也作为“cname”。验证程序查找name属性。