1.轻量级的JavaScript表单验证
在应用中引用 validator.min.js
文件
<script type="text/javascript" src="dist/validator.min.js"></script>
实例:
<form id="example_form">
<div>
<label for="email">邮箱验证</label>
<input type="email" name="email" id="email" class="form-control" placeholder="Email">
</div>
</form>
<script type="text/javascript">
var validator = new Validator('example_form',[
{
//name 字段
name: 'email',
display:"你输入的不{{email}}是合法邮箱|不能为空|太长|太短",
// 验证条件
rules: 'is_emil|max_length(12)|required'
// rules: 'valid_email|required|max_length(12)|min_length(2)'
},{
//name 字段
name: 'sex',
display:"请你选择性别{{sex}}",
// 验证条件
rules: 'required'
}
],function(obj,evt){
if(obj.errors){
// 判断是否错误
}
})
</script>
说明:
new Validator(formName, option, callback)
formName
formName
是标签中<form>
中的 id
或者 name
的值,如上面的example_form
option
-
name
-> input 中name
对应的值 -
display
-> 验证错误要提示的文字{{这个中间是name对应的值}}
-
rules
-> 一个或多个规则(中间用|
间隔)-
is_email
-> 验证合法邮箱 -
is_ip
-> 验证合法 ip 地址 -
is_fax
-> 验证传真 -
is_tel
-> 验证座机 -
is_phone
-> 验证手机 -
is_url
-> 验证URL -
required
-> 是否为必填 -
max_length
-> 最大字符长度 -
min_length
-> 最小字符长度
-
自定义正则
自定义正则,以regexp_
开始
{
//name 字段
name: 'sex',
// 对应下面验证提示信息
display:"请你选择性别{{sex}}|请输入数字",
//自定义正则`regexp_num`
regexp_num:/^[0-9]+$/,
// 验证条件,包括应用自定义正则`regexp_num`
rules: 'required|regexp_num'
}
字符串验证:
var v = new Validator();
v.isEmail('wowohoo@qq.com'); // -> 验证合法邮箱 |=> 返回布尔值
v.isIp('192.168.23.3'); // -> 验证合法 ip 地址 |=> 返回布尔值
v.isFax(''); // -> 验证传真 |=> 返回布尔值
v.isPhone('13622667263'); // -> 验证手机 |=> 返回布尔值
v.isTel('021-324234-234'); // -> 验证座机 |=> 返回布尔值
v.isUrl('http://JSLite.io'); // -> 验证URL |=> 返回布尔值
v.maxLength('JSLite',12); // -> 最大长度 |=> 返回布尔值
v.minLength('JSLite',3); // -> 最小长度 |=> 返回布尔值
v.required('23'); // -> 是否为必填(是否为空) |=> 返回布尔值
表单中验证
点击按submit按钮验证和没有submit验证的区别:没有submit验证需要在结尾加上
validator.validate()
2.Jquery .validate()表单验证
validate([options]):
1.debug(default: false
)
$(".selector").validate({
debug: true
});
启用调试模式。如果为true,表单不会提交,并且错误显示在控制台(如果window.console属性存在,将检查)上,如试图帮助建立验证约缺少方法和其他调试消息警告。。尝试当一个表单刚刚提交,而不是验证停止提交启用。
2.submitHandler (default: native form submit
)
ex:
Submits the form via Ajax when valid.
$(".selector").validate({
submitHandler: function(form) {
$(form).ajaxSubmit();
}
});
ex:
使用submitHandler处理一些东西,然后使用默认的提交。注意,form是指一个DOM元素,这样一来验证不会再次触发。
3.invalidHandler
无效表单提交时,回调客户端代码。调用事件对象作为第一个参数,验证为第二个参数。
ex:
表单上显示错误消息,表明当用户试图提交无效表单有多少个字段是无效的。
$(".selector").validate({
invalidHandler: function(event, validator) {
// 'this' refers to the form
var errors = validator.numberOfInvalids();
if (errors) {
var message = errors == 1
? 'You missed 1 field. It has been highlighted'
: 'You missed ' + errors + ' fields. They have been highlighted';
$("div.error span").html(message);
$("div.error").show();
} else {
$("div.error").hide();
}
}
});
4.ignore (default: ":hidden"
)
验证时,简单地筛选出需要忽略的元素。
ex:Ignores all elements with the class "ignore" when validating.
$("#myform").validate({
ignore: ".ignore"
});
5.rules (default: rules are read from markup (classes, attributes, data)
)
ex:
$(".selector").validate({
rules: {
// simple rule, converted to {required:true}
name: "required",
// compound rule
email: {
required: true,
email: true
}
}
});
$(".selector").validate({
rules: {
contact: {
required: true,
email: {
depends: function(element) {
return $("#contactform_email").is(":checked");
}
}
}
}
});
$(".selector").validate({
rules: {
// at least 15€ when bonus material is included
pay_what_you_want: {
required: true
min: {
// min needs a parameter passed to it
param: 15,
depends: function(element) {
return $("#bonus-material").is(":checked");
}
}
}
}
});
6.messages (default: the default message for the method used
)
ex:
$(".selector").validate({
rules: {
name: "required",
email: {
required: true,
email: true
}
},
messages: {
name: "Please specify your name",
email: {
required: "We need your email address to contact you",
email: "Your email address must be in the format of name@domain.com"
}
}
});
$(".selector").validate({
rules: {
name: {
required: true,
minlength: 2
}
},
messages: {
name: {
required: "We need your email address to contact you",
minlength: jQuery.validator.format("At least {0} characters required!")
}
}
});
7.groups
Use a table layout for the form, placing error messags in the next cell after the input.
$("#myform").validate({
groups: {
username: "fname lname"
},
errorPlacement: function(error, element) {
if (element.attr("name") == "fname" || element.attr("name") == "lname" ) {
error.insertAfter("#lastname");
} else {
error.insertAfter(element);
}
}
});
8.showErrors
Update the number of invalid elements each time an error is displayed. Delegates to the default implementation for the actual error display.
$(".selector").validate({
showErrors: function(errorMap, errorList) {
$("#summary").html("Your form contains "
+ this.numberOfInvalids()
+ " errors, see details below.");
this.defaultShowErrors();
}
});