jQuery 验证插件未显示自定义消息
jQuery Validation Plugin not showing custom messages
试图创建类似于 documentation example 的注册表单,但无法正常工作。在 Chrome Inspector 中显示 "jquery.validate.js:640 Uncaught TypeError: Cannot read property 'call' of undefined" 但我无法理解该代码。
实际上电子邮件字段有点用...
这是 HTML:
<html>
<head>
<meta charset="utf-8">
<title>Register</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="css/quickipedia.css">
<script src="http://code.jquery.com/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery.validate.js"></script>
<script src="js/register.js"></script>
</head>
<body class="q-site-background">
<div id="q-banner"></div>
<div id="q-login">
<form class="form-horizontal" id="registrationForm" role="form" action="register.php" method="post">
<div class="row">
<div class="col-span-4 col-md-offset-4">
<h2 class="form-horizontal-heading">Register</h2>
</div>
</div>
<br/>
<div class="form-group">
<label for="username" class="control-label col-sm-4">Username: </label>
<div class="col-sm-8">
<input type="text" class="form-control" id="username" name="username" placeholder="Username" autofocus >
</div>
</div>
<div class="form-group">
<label for="password" class="control-label col-sm-4">Password: </label>
<div class="col-sm-8">
<input type="password" class="form-control" id="password" name="password" placeholder="Password" >
</div>
</div>
<div class="form-group">
<label for="confirm_password" class="control-label col-sm-4">Confirm Password: </label>
<div class="col-sm-8">
<input type="password" class="form-control" id="confirm_password" name="confirmPassword" placeholder="Confirm Password" >
</div>
</div>
<div class="form-group">
<label for="email" class="control-label col-sm-4">Email: </label>
<div class="col-sm-8">
<input type="email" class="form-control" id="email" name="email" placeholder="Email">
</div>
</div>
<div class="form-group">
<label for="confirm_email" class="control-label col-sm-4">Confirm Email: </label>
<div class="col-sm-8">
<input type="email" class="form-control" id="confirm_email" name="confirmEmail" placeholder="Confirm Email" >
</div>
</div>
<button id="#register" class="btn btn-lg btn-primary btn-block q-button col-span-4" type="submit">Create Account</button>
</form>
<br/>
</div>
</body>
</html>
和register.js:
$(document).ready(function() {
$("#registrationForm").validate({
rules:{
username:{
required:true,
minLength:4
},
password:{
minLength:6,
required:true
},
confirm_password:{
minLength:6,
required:true,
equalTo:"#password"
},
email:{
required:true,
email:true
},
confirm_email:{
required:true,
email:true,
equalTo:"#email"
}
},
messages:{
username:{
required:"Please enter a username",
minLength:"Username must be at least 4 characters long"
},
password:{
required:"Please enter a password",
minLength:"Password must be at least 6 characters"
},
confirm_password:{
required:"Please confirm password",
minLength:"Password must be at least 6 characters",
equalTo:"Passwords do not match"
},
email:"Please enter an email",
confirm_email:{
required:"Please confirm email",
equalTo:"Emails do not match"
}
}
});
});
我已经检查了十亿次语法,没有发现任何错误。此外,如果我包含 HTML 输入属性(例如 required minLength="6" equalTo="#password"),它会起作用,但这只会显示标准消息。我想使用我创建的自定义的但没有显示。
I've checked over the syntax a billion times and can't find any errors.
没有名为 minLength
的规则。这就是你的 "undefined" 错误的根源。
It's minlength
。 (注意准确拼写)
$("#registrationForm").validate({
rules: {
username: {
required: true,
minlength: 4
},
....
你这里也会有问题...
confirm_email: { // <- THIS IS SUPPOSED TO BE THE NAME ATTRIBUTE
required:true,
email:true,
equalTo:"#email"
}
rules
选项中的规则由字段的 name
属性定义,而非 由其 id
。
试图创建类似于 documentation example 的注册表单,但无法正常工作。在 Chrome Inspector 中显示 "jquery.validate.js:640 Uncaught TypeError: Cannot read property 'call' of undefined" 但我无法理解该代码。
实际上电子邮件字段有点用...
这是 HTML:
<html>
<head>
<meta charset="utf-8">
<title>Register</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="css/quickipedia.css">
<script src="http://code.jquery.com/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery.validate.js"></script>
<script src="js/register.js"></script>
</head>
<body class="q-site-background">
<div id="q-banner"></div>
<div id="q-login">
<form class="form-horizontal" id="registrationForm" role="form" action="register.php" method="post">
<div class="row">
<div class="col-span-4 col-md-offset-4">
<h2 class="form-horizontal-heading">Register</h2>
</div>
</div>
<br/>
<div class="form-group">
<label for="username" class="control-label col-sm-4">Username: </label>
<div class="col-sm-8">
<input type="text" class="form-control" id="username" name="username" placeholder="Username" autofocus >
</div>
</div>
<div class="form-group">
<label for="password" class="control-label col-sm-4">Password: </label>
<div class="col-sm-8">
<input type="password" class="form-control" id="password" name="password" placeholder="Password" >
</div>
</div>
<div class="form-group">
<label for="confirm_password" class="control-label col-sm-4">Confirm Password: </label>
<div class="col-sm-8">
<input type="password" class="form-control" id="confirm_password" name="confirmPassword" placeholder="Confirm Password" >
</div>
</div>
<div class="form-group">
<label for="email" class="control-label col-sm-4">Email: </label>
<div class="col-sm-8">
<input type="email" class="form-control" id="email" name="email" placeholder="Email">
</div>
</div>
<div class="form-group">
<label for="confirm_email" class="control-label col-sm-4">Confirm Email: </label>
<div class="col-sm-8">
<input type="email" class="form-control" id="confirm_email" name="confirmEmail" placeholder="Confirm Email" >
</div>
</div>
<button id="#register" class="btn btn-lg btn-primary btn-block q-button col-span-4" type="submit">Create Account</button>
</form>
<br/>
</div>
</body>
</html>
和register.js:
$(document).ready(function() {
$("#registrationForm").validate({
rules:{
username:{
required:true,
minLength:4
},
password:{
minLength:6,
required:true
},
confirm_password:{
minLength:6,
required:true,
equalTo:"#password"
},
email:{
required:true,
email:true
},
confirm_email:{
required:true,
email:true,
equalTo:"#email"
}
},
messages:{
username:{
required:"Please enter a username",
minLength:"Username must be at least 4 characters long"
},
password:{
required:"Please enter a password",
minLength:"Password must be at least 6 characters"
},
confirm_password:{
required:"Please confirm password",
minLength:"Password must be at least 6 characters",
equalTo:"Passwords do not match"
},
email:"Please enter an email",
confirm_email:{
required:"Please confirm email",
equalTo:"Emails do not match"
}
}
});
});
我已经检查了十亿次语法,没有发现任何错误。此外,如果我包含 HTML 输入属性(例如 required minLength="6" equalTo="#password"),它会起作用,但这只会显示标准消息。我想使用我创建的自定义的但没有显示。
I've checked over the syntax a billion times and can't find any errors.
没有名为 minLength
的规则。这就是你的 "undefined" 错误的根源。
It's minlength
。 (注意准确拼写)
$("#registrationForm").validate({
rules: {
username: {
required: true,
minlength: 4
},
....
你这里也会有问题...
confirm_email: { // <- THIS IS SUPPOSED TO BE THE NAME ATTRIBUTE
required:true,
email:true,
equalTo:"#email"
}
rules
选项中的规则由字段的 name
属性定义,而非 由其 id
。