【发布时间】:2014-05-20 08:12:21
【问题描述】:
我有这样的标记代码
<div>
<form action="http://fileaction.com">
<label for="email">Email:</label>
<input type="text" name="email" id="login-email" class="">
<label for="password">Password:</label>
<input type="password" name="password" id="login-password" class="">
<input type="submit" id="login" value="Login">
</form>
</div>
在这个表单中,我有两个字段。一个用于电子邮件,另一个用于密码。我想验证它们。所以条件会是这样 电子邮件字段将匹配电子邮件模式,密码字段将检查 6 到 16 个字符之间的密码。 一旦该字段将被验证,它将重定向到表单操作。因此,为此我编写了这样的代码
var emailField = jQuery('#login-form-wrap input#login-email');
var passwordField = jQuery('#login-form-wrap input#login-password');
var emailPattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
jQuery('input#login').click(function(e) {
e.preventDefault();
if(emailField.val().length > 0 || emailPattern.test(emailField) ) {
emailField.removeClass('error');
}
else {
emailField.addClass('error');
}
if(passwordField.val().length > 6 ) {
passwordField.removeClass('error');
}
else {
passwordField.addClass('error');
}
});
但它没有验证电子邮件模式,并且在两个字段都有效后,它应该重定向到提交时的表单操作页面。
【问题讨论】:
标签: jquery forms validation