我有一个简单的注册表单,它使用jQuery validate来验证表单的内容。但它似乎没有工作。无论我的页面顶部是否有jQuery,我的servlet都会触发,并且表单会以无效数据提交。以下是我的代码。有人可以帮忙吗?
脚本代码:
<head>
<title>Sign Up</title>
<meta charset="iso-8859-1">
<link rel="stylesheet" href="style/style.css" type="text/css">
<!--[if lt IE 9]><script src="scripts/html5shiv.js"></script><![endif]-->
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.js" type="text/javascript">
</script>
<script src="http://code.jquery.com/jquery-1.8.3.min.js" type="text/javascript">
</script>
<script type="text/javascript">
$().ready(function() {
// validate the comment form when it is submitted
$("#signup").validate();
// validate signup form on keyup and submit
$("#signup").validate({
rules: {
firstname: "required",
lastname: "required",
address1: "required",
city: "required",
county: "required",
postcode: "required",
password_s: {
required: true,
minlength: 5
},
password_s_con: {
required: true,
minlength: 5,
equalTo: "#password_s"
},
email: {
required: true,
email: true
},
agree: "required"
},
messages: {
firstname: "Please enter your first name",
lastname: "Please enter your last name",
address1: "Please enter your addres",
city: "Please enter your city/town",
county: "Please enter your county",
postcode: "Please enter your postcode",
password: {
required: "Please provide a password",
minlength: "Your password must be at least 5 characters long"
},
confirm_password: {
required: "Please provide a password",
minlength: "Your password must be at least 5 characters long",
equalTo: "Please enter the same password as above"
},
email: "Please enter a valid email address",
agree: "Please accept our policy"
}
});
});
</script>
</head>
表格:
<table align="left">
<tr><td align="left">
<form name="signup" id="signup" action="SignUpServlet" method="post">
<table width="400px" align="right" class="">
<fieldset>
<legend>Sign Up:</legend>
<tr>
<td>First Name:</td> <td><input type="text" id="firstname" name="firstname" required="required">*</td>
</tr>
<tr>
<td>Last Name:</td><td><input type="text" id="lastname" name="lastname" required="required">*</td>
</tr>
<tr>
<td>Address Line 1:</td><td> <input type="text" id="address1" name="address1" required="required">*</td>
</tr>
<tr>
<td>Address Line 2:</td><td> <input type="text" id="address2" name="address2"></td>
</tr>
<tr>
<td>City:</td><td> <input type="text" id="city" name="city" required="required">*</td>
</tr>
<tr>
<td>County:</td><td><input type="text" id="county" name="county" required="required">*</td>
</tr>
<tr>
<td>Postcode:</td> <td><input type="text" id="postcode" name="postcode" required="required">*</td>
</tr>
<tr>
<td>Phone:</td><td> <input type="text" id="phone" name="phone"></td>
</tr>
<tr>
<td>Email Address:</td><td> <input type="text" id="email_s" name="email_s" required="required">*</td>
</tr>
<tr>
<td>Password:</td><td> <input type="password" id="password_s" name="password_s" required="required"></td>
</tr>
<tr>
<td>Confirm Password:</td><td> <input type="password" id="password_s_con" name="password_s_con" required="required"></td>
</tr>
<tr>
<td>Privacy Policy:</td><td> <input type="checkbox" class="checkbox" id="agree" name="agree" required="required"></td>
</tr>
<tr>
<td></td><td>
<input type="submit" id="lf_submit" value="submit"></td>
</tr>
</fieldset>
</table>
</form>
</td></tr>
<tr><td align="left"> </td></tr>
</table>
答案 0 :(得分:12)
首先,您无需再拨打.validate()
两次。这是多余的和多余的,所以删除第一个,然后自然保留包含选项的那个。
$().ready(function() {
// validate the comment form when it is submitted
$("#signup").validate(); // <-- REMOVE THIS
// validate signup form on keyup and submit
$("#signup").validate({
在.validate()
内调用 DOM Ready
一次以初始化表单。所有验证事件(例如submit
,keyup
等)都是自动的,除非您在插件选项中覆盖它们。
其次,错误地包括插件后的jQuery 。
无论您使用哪种jQuery插件, jQuery总是需要首先包含...
<script src="http://code.jquery.com/jquery-1.8.3.min.js" type="text/javascript"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.js" type="text/javascript"></script>
您的代码的演示: http://jsfiddle.net/qUYvS/