前言:Html5和css3已经走入视线。html5新增了很多东西,比如表单元素的类型,验证等等,但是现在诸多浏览器还不兼容html5的新特性,故此,使用jquery加以验证。
等大部分浏览器支持html5,页面不用修改,直接删除jquery插件就可以继续使用。
注意:1、本例使用的jquery插件是jquery.tools.min.js,最好使用包含jquery基础包的完整版本。 2、本例中的验证,在火狐,ie7、8、9,Safari中测试了,可以用。 3、表单提交使用Submit按钮
花了好久调试的,希望对看到的人有用。如果有错误,欢迎指正。
Jquery_Validator_Exampes
1、基础示例 效果图:
Html代码:
A、常用html5增加的input类型包括:email、url、number、time.
B、常用html5增加的input属性包括:required(必填)、pattern(验证正则表达式)、data-message(错误提示)、min(最小长度)、max(最大长度)、data-equals(判断两个输入框值是否一致,常用于密码框的2次输入)
C、使用jquery验证:没有特殊样式需求,在表单后面调用下面的方法:
$("#from1").validator();
D、当input类型为time时,在支持html5的浏览器中,输入框自动识别输入格式,在不支持html5的浏览器中,使用以下代码:
$.tools.validator.fn("[type=time]", "Please supply a valid time", function(input, value) { return /^\d\d:\d\d$/.test(value); });
$.tools.validator.fn()的三个参数分别是:input类型,错误提示,函数
E、当data-equals属性出现时,在支持html5的浏览器中,自动验证两个输入框值是否相等,在不支持html5的浏览器中,使用以下代码:
$.tools.validator.fn("[data-equals]", "Different value and $ 1", function(input) { var name = input.attr("data-equals"), field = this.getInputs().filter("[name=" + name + "]"); return input.val() == field.val() ? true : [name]; });
$.tools.validator.fn()的参数中‘$1’代表 data-equals 的值
F、国家选项为菜单类型, 没有直接可以用的验证方法,使用以下代码:
$.tools.validator.fn("[name=select]", "Please select a value", function(input, value) { if( value == "0"){ return false; }else{ return true; } });
再举个例子:验证id为name的文本框。
$.tools.validator.fn("[id=name]", "该品牌已存在", function(input, value) { if(isBrandExists()){ return false; }else if(isBrandHasRel()){ return false; }else{ return true; } });
isBrandExists()和isBrandHasRel()方法是含有业务逻辑的验证。
2、错误提示位置修改示例
效果图:
html代码:
View Code
G、错误提示的位置可以不同,可以设置不同的提示框样式。使用以下代码:
$("#myform2").validator({ position: 'top left', //提示框出现的位置。一共有8个方位 offset: [-12, 0],//提示框的偏移量 message: '<div><em/></div>'//提示文字的容器,这里的<em/>是为了美观设置的箭头,一般使用<div></div> })
用到的css样式如下:
.error { padding: 4px 8px; border: 1px solid #ffff99; height: 16px; color:#336699; font-size: 12px; display: none; background-color: #ffff99; vertical-align:middle; -moz-border-radius: 4px; -webkit-border-radius: 4px; -moz-border-radius-topleft: 0; -moz-box-shadow: 0 0 6px #ddd; -webkit-border-top-left-radius: 0; -webkit-box-shadow: 0 0 6px #ddd; -moz-border-radius-bottomleft: 0; -webkit-border-bottom-left-radius: 0; } .error em { border-width: 10px; border-style: solid; border-color:#ffff99 transparent transparent; width: 0px; height: 0px; bottom: -20px; display: block; position: absolute;}
3、错误框标红示例
效果图:
html代码:
View Code
H、出现错误时,给输入框加上醒目的样式。使用以下代码:
$("#myform3").bind("onFail", function(e, errors) { if (e.originalEvent.type == 'submit') { $.each(errors, function() { var input = this.input; input.css({border: 'red 1px solid'}).focus(function() {//这里为输入错误的样式 input.css({borde: '#ccc 1px solid'});//这里为输入正确后的样式 }); }); } });
4、仿服务器验证示例(含有业务逻辑的验证也可以这样写)
效果图,图1为验证成功,图2为验证失败 图1 图2
html代码:
View Code
I、模拟后台验证。使用以下代码:
这是在前台基本验证通过以后再到服务器验证数据。
$("#from4").validator().submit(function(e) { var form = $(this); // 如果客户端验证通过 if (!e.isDefaultPrevented()) { $.getJSON("js/server-fail.js", function(json){ // 服务器端验证通过,就跳转 if ($("#name2").val()=="qwert") { form.load("success.html"); // 服务器端验证失败,使用json中的信息验证 } else { form.data("validator").invalidate(json); } }); //禁止默认提交 e.preventDefault(); } });
|