2023年6月21日发(作者:)

表单验证之使⽤⽅法⼀.validform有什么⽤?⽹页上有⼤量的input需要你进⾏验证的时候,如果是弹窗的话,需要不停地判断,如果为空,弹窗。如果不是数字,弹窗。所以要将这么多验证交给⼀个js去验证。⼆.我现在知道的全页⾯js验证⽂件官⽹:这东西就是放在我们的vs中的那个验证⽤js这是demo:这货看起来⾼⼤上,但是我就被坑了。。。这货每个input都要加name啊,不然不验证。。。后来想了想,这东西是⽤来给form表单做验证的,没有name估计就不发回后台,于是就不验证(如果我的做法不对的话,请指正)⽤这货怎么验证ajax提交的数据添加按钮绑定click事件,function中提交对应的form表单。之后在validate⽅法中的submithandler这块把对应的ajax⽅法添加进去。$("#btnAdd").on("click", function() { $("#validateform").submit();});$("#validateform").validate({ rules: { txtUrl: { required: true, url: true //确定是不是url }, txtRequired: { required: true } }, submitHandler: function(form) { addNewAd(); }});

在⽹上好像还有配合来使⽤的,不过没有深⼊研究。这个验证js我感觉还不错,⾄少整个是中⽂的,⽂档研究起来很容易。官⽹:优点:只要每个需要验证的对象都有了datatype这个属性,其他的没有也可以检测,这点对于动态⽣成的表单来说⼗分的友好。不⽤再像那样为每个对象都绑定⼀个不重样的name,不同的name想检测url还要写很多⾏rules(⾄少我是这么写的,不知道有没有更简单的⽅法)三.简单使⽤⽅法pe要想标识出来想要验证的对象,我们就需要给这个对象绑定datatype属性,已经内置了10种验证格式,如果不够,我们还可以使⽤来对验证格式进⾏扩展。1.1 datatype=*这个验证是⽤来表⽰当前的对象不能为空的,任何字符均可1.2 datatype=*6-16validform这个js有个优点,它会⾃动扩展你所写的验证格式。不同的字段我们可能要求的字符数量不⼀样,⽤户名这⾥你写了*6-16,要求⽤户填⼊6到16位的字符。可标题这⾥⼜要求填⼊2到5个字符,难道我们要在验证格式这⾥再写⼀个*2-5吗?不⽤!形如"*6-16"的datatype,Validform会⾃动扩展,可以指定任意的数值范围。如内置基本类型有"*6-16",那么你绑定 datatype="*4-12"就表⽰4到12位任意字符。如果你⾃定义了⼀个datatype="zh2-4",表⽰2到4位中⽂字符,那么 datatype="zh2-6"就表⽰2到6位中⽂字符。1.3 datatype=url可以⽤来验证⽹址。1.4 datatype=e可以⽤来验证电⼦邮箱地址1.5 datatype=m⽤来验证⼿机号,但是给的正则表达式有问题,对于新出现的177号段之类的没有加⼊进去,这块需要注意⼀下。1.6 其他注意事项datatype⽀持规则累加或单选。⽤","分隔表⽰规则累加;⽤"|"分隔表⽰规则多选⼀,即只要符合其中⼀个规则就可以通过验证,绑定的规则会依次 验证,只要验证通过,后⾯的规则就会忽略不再⽐较。如绑定datatype="m|e",表⽰既可以填写⼿机号码,也能填写邮箱地址,如果知道填⼊的是⼿ 机号码,那么就不会再检测他是不是邮箱地址;datatype="zh,s2-4",表⽰要符合⾃定义类型"zh",也要符合规则"s2-4"。直接绑定正则:如可⽤这样写datatype="/w{3,6}/i",要求是3到6位的字母,不区分⼤⼩写;⽀持简单的逻辑运算:如datatype="m | e, *4-18 | /w{3,6}/i | /^$/",这 个表达式的意思是:可以是⼿机号码;或者是邮箱地址,但字符长度必须在4到18位;或者是3到6位的字母,不区分⼤⼩写;或者输⼊ ,区分⼤⼩写。这⾥","分隔相当于逻辑运算⾥的"&&"; "|"分隔相当于逻辑运算⾥的"||";不⽀持括号运算。绑定了ignore="ignore"的表单元素,在有输⼊时,会验证所填数据是否符合datatype所指定数据类型,没有填写内容时则会忽略对它的验证;如何在表单中控制如果某⼏项要填都填,要不填都不填。对这⼏项赋给相同的class ⽐如AllNeedOrEmpty之后在初始化参数中的beforeCheck部分对这个class做操作,具体代码如下 1 beforeCheck: function(curform) { 2 $("#sliderAd ul").each(function() { 3 var needIgnore = true; 4 var _this = $(this); 5 var checkList = _("input[class*=AllNeedOrEmpty]"); 6 (function() { 7 var that = $(this); 8 if (() != "") { 9 (function() {10 $(this).removeAttr("ignore");11 });12 needIgnore = false;13 }14 });15 if (needIgnore) {16 (function() {17 $(this).attr("ignore", "ignore");18 });19 }20 });21 },

上⾯的代码只是提供⼀个思路,肯定有更好的⽅法,⽐如使⽤validform对象中的ignore⽅法和unignore⽅法,通过向这两个⽅法传⼊表单元素来忽略和重新获取验证效果。不过这两种⽅法是对元素赋给和去掉dataIgnore来实现验证与否。源码如下: 1 ignore: function(selector) { 2 var obj = this; 3 var selector = selector || "[datatype]" 4

5 $().find(selector).each(function() { 6 $(this).data("dataIgnore", "dataIgnore").removeClass("Validform_error"); 7 }); 8

9 return this;10 },11

12 unignore: function(selector) {13 var obj = this;14 var selector = selector || "[datatype]"15

16 $().find(selector).each(function() {17 $(this).removeData("dataIgnore");18 });19

20 return this;21 },

我的⽅法是控制ignore这个attr,⽽validform⽅法则是在元素上利⽤data⽅法来实现是否验证,思路基本⼀致,但是当元素是动态⽣成的时候我觉得还是ignore=ignore这个⽅法⽐较好,因为省事啊。 欢迎评论相互探讨。3.初始化参数如下是官⽹例⼦中给出的所有的可⽤参数页⾯地址:

1 $(".demoform").Validform({ 2 btnSubmit: "#btn_sub", //提交按钮 3 btnReset: ".btn_reset", 4 tiptype: 1, // 5 ignoreHidden: false, 6 dragonfly: false, 7 tipSweep: true, 8 label: ".label", 9 showAllError: false,10 postonce: true,11 ajaxPost: true,12 datatype: {13 "*6-20": /^[^s]{6,20}$/,14 "z2-4": /^[u4E00-u9FA5uf900-ufa2d]{2,4}$/,15 "username": function(gets, obj, curform, regxp) {16 //参数gets是获取到的表单元素值,obj为当前表单元素,curform为当前验证的表单,regxp为内置的⼀些正则表达式的引⽤;17 var reg1 = /^[w.]{4,16}$/,18 reg2 = /^[u4E00-u9FA5uf900-ufa2d]{2,8}$/;19 if ((gets)) {20 return true;21 }22 if ((gets)) {23 return true;24 }25 return false;26 //注意return可以返回true 或 false 或 字符串⽂字,true表⽰验证通过,返回字符串表⽰验证失败,字符串作为错误提⽰显⽰,返回false则⽤errmsg或默认的错误提⽰;27 },28 "phone": function() {29 // 5.0 版本之后,要实现⼆选⼀的验证效果,datatype 的名称 不 需要以 "option_" 开头;30 }31 },32 usePlugin: {33 swfupload: {},34 datepicker: {},35 passwordstrength: {},36 jqtransform: {37 selector: "select,input"38 }39 },40 beforeCheck: function(curform) {41 //在表单提交执⾏验证之前执⾏的函数,curform参数是当前表单对象。42 //这⾥明确return false的话将不会继续执⾏验证操作;43 },44 beforeSubmit: function(curform) {45 //在验证成功后,表单提交前执⾏的函数,curform参数是当前表单对象。46 //这⾥明确return false的话表单将不会提交;47 },48 callback: function(data) {49 //返回数据data是json对象,{"info":"demo info","status":"y"}50 //info: 输出提⽰信息;51 //status: 返回提交数据的状态,是否提交成功。如可以⽤"y"表⽰提交成功,"n"表⽰提交失败,在ajax_⽂件返回数据⾥⾃定字符,主要⽤在callback函数⾥根据该值执⾏相应的回调操作;52 //你也可以在ajax_⽂件返回更多信息在这⾥获取,进⾏相应操作;53 //ajax遇到服务端错误时也会执⾏回调,这时的data是{ status:**, statusText:**, readyState:**, responseText:** };54

55 //这⾥执⾏回调操作;56 //注意:如果不是ajax⽅式提交表单,传⼊callback,这时data参数是当前表单对象,回调函数会在表单验证全部通过后执⾏,然后判断是否提交表单,如果callback⾥明确return false,则表单不会提交,如果return true或没有return,则会提交57 }58 });

3.1 如何使⽤ajax提交数据,⽽不提交表单。1 beforeSubmit: function (curform) {2 addNewAd();3 return false;4 //这⾥明确return false的话表单将不会提交;5 }

直接在beforeSubmit中加上对应的ajax提交函数,并加上return false就可以保证表单不会被提交⽽执⾏我们的ajax函数。3.2 tiptype⽤来设置提⽰信息的展⽰⽅式,可⽤的值有:1、2、3、4和function函数,默认tiptype为1。1代表⾃定义弹出框提⽰。2代表侧边提⽰,会在当前元素的⽗级的next对象的⼦级查找显⽰提⽰信息的对象。如果不存在就会创建1 if (tiptype == 2) {2 if ($(this).parent().next().find(".Validform_checktip").length == 0) {3 $(this).parent().next().append("");4 $(this).siblings(".Validform_checktip").remove();5 }6 }

3也是代表的侧边提⽰,不过它是会在当前元素的siblings对象中查找显⽰提⽰信息的对象同样也是不存在就会创建1 if (tiptype == 3) {2 if ($(this).siblings(".Validform_checktip").length == 0) {3 $(this).parent().append("");4 $(this).parent().next().find(".Validform_checktip").remove();5 }6 }

4也是侧边显⽰会在当前元素的⽗级的next对象下查找显⽰提⽰信息的对象还可以传⼊⾃定义函数,实现你想要的提⽰效果。以上就是我认为中需要注意的事情和使⽤⽅法的展⽰,欢迎讨论,拍砖。

2023年6月21日发(作者:)

表单验证之使⽤⽅法⼀.validform有什么⽤?⽹页上有⼤量的input需要你进⾏验证的时候,如果是弹窗的话,需要不停地判断,如果为空,弹窗。如果不是数字,弹窗。所以要将这么多验证交给⼀个js去验证。⼆.我现在知道的全页⾯js验证⽂件官⽹:这东西就是放在我们的vs中的那个验证⽤js这是demo:这货看起来⾼⼤上,但是我就被坑了。。。这货每个input都要加name啊,不然不验证。。。后来想了想,这东西是⽤来给form表单做验证的,没有name估计就不发回后台,于是就不验证(如果我的做法不对的话,请指正)⽤这货怎么验证ajax提交的数据添加按钮绑定click事件,function中提交对应的form表单。之后在validate⽅法中的submithandler这块把对应的ajax⽅法添加进去。$("#btnAdd").on("click", function() { $("#validateform").submit();});$("#validateform").validate({ rules: { txtUrl: { required: true, url: true //确定是不是url }, txtRequired: { required: true } }, submitHandler: function(form) { addNewAd(); }});

在⽹上好像还有配合来使⽤的,不过没有深⼊研究。这个验证js我感觉还不错,⾄少整个是中⽂的,⽂档研究起来很容易。官⽹:优点:只要每个需要验证的对象都有了datatype这个属性,其他的没有也可以检测,这点对于动态⽣成的表单来说⼗分的友好。不⽤再像那样为每个对象都绑定⼀个不重样的name,不同的name想检测url还要写很多⾏rules(⾄少我是这么写的,不知道有没有更简单的⽅法)三.简单使⽤⽅法pe要想标识出来想要验证的对象,我们就需要给这个对象绑定datatype属性,已经内置了10种验证格式,如果不够,我们还可以使⽤来对验证格式进⾏扩展。1.1 datatype=*这个验证是⽤来表⽰当前的对象不能为空的,任何字符均可1.2 datatype=*6-16validform这个js有个优点,它会⾃动扩展你所写的验证格式。不同的字段我们可能要求的字符数量不⼀样,⽤户名这⾥你写了*6-16,要求⽤户填⼊6到16位的字符。可标题这⾥⼜要求填⼊2到5个字符,难道我们要在验证格式这⾥再写⼀个*2-5吗?不⽤!形如"*6-16"的datatype,Validform会⾃动扩展,可以指定任意的数值范围。如内置基本类型有"*6-16",那么你绑定 datatype="*4-12"就表⽰4到12位任意字符。如果你⾃定义了⼀个datatype="zh2-4",表⽰2到4位中⽂字符,那么 datatype="zh2-6"就表⽰2到6位中⽂字符。1.3 datatype=url可以⽤来验证⽹址。1.4 datatype=e可以⽤来验证电⼦邮箱地址1.5 datatype=m⽤来验证⼿机号,但是给的正则表达式有问题,对于新出现的177号段之类的没有加⼊进去,这块需要注意⼀下。1.6 其他注意事项datatype⽀持规则累加或单选。⽤","分隔表⽰规则累加;⽤"|"分隔表⽰规则多选⼀,即只要符合其中⼀个规则就可以通过验证,绑定的规则会依次 验证,只要验证通过,后⾯的规则就会忽略不再⽐较。如绑定datatype="m|e",表⽰既可以填写⼿机号码,也能填写邮箱地址,如果知道填⼊的是⼿ 机号码,那么就不会再检测他是不是邮箱地址;datatype="zh,s2-4",表⽰要符合⾃定义类型"zh",也要符合规则"s2-4"。直接绑定正则:如可⽤这样写datatype="/w{3,6}/i",要求是3到6位的字母,不区分⼤⼩写;⽀持简单的逻辑运算:如datatype="m | e, *4-18 | /w{3,6}/i | /^$/",这 个表达式的意思是:可以是⼿机号码;或者是邮箱地址,但字符长度必须在4到18位;或者是3到6位的字母,不区分⼤⼩写;或者输⼊ ,区分⼤⼩写。这⾥","分隔相当于逻辑运算⾥的"&&"; "|"分隔相当于逻辑运算⾥的"||";不⽀持括号运算。绑定了ignore="ignore"的表单元素,在有输⼊时,会验证所填数据是否符合datatype所指定数据类型,没有填写内容时则会忽略对它的验证;如何在表单中控制如果某⼏项要填都填,要不填都不填。对这⼏项赋给相同的class ⽐如AllNeedOrEmpty之后在初始化参数中的beforeCheck部分对这个class做操作,具体代码如下 1 beforeCheck: function(curform) { 2 $("#sliderAd ul").each(function() { 3 var needIgnore = true; 4 var _this = $(this); 5 var checkList = _("input[class*=AllNeedOrEmpty]"); 6 (function() { 7 var that = $(this); 8 if (() != "") { 9 (function() {10 $(this).removeAttr("ignore");11 });12 needIgnore = false;13 }14 });15 if (needIgnore) {16 (function() {17 $(this).attr("ignore", "ignore");18 });19 }20 });21 },

上⾯的代码只是提供⼀个思路,肯定有更好的⽅法,⽐如使⽤validform对象中的ignore⽅法和unignore⽅法,通过向这两个⽅法传⼊表单元素来忽略和重新获取验证效果。不过这两种⽅法是对元素赋给和去掉dataIgnore来实现验证与否。源码如下: 1 ignore: function(selector) { 2 var obj = this; 3 var selector = selector || "[datatype]" 4

5 $().find(selector).each(function() { 6 $(this).data("dataIgnore", "dataIgnore").removeClass("Validform_error"); 7 }); 8

9 return this;10 },11

12 unignore: function(selector) {13 var obj = this;14 var selector = selector || "[datatype]"15

16 $().find(selector).each(function() {17 $(this).removeData("dataIgnore");18 });19

20 return this;21 },

我的⽅法是控制ignore这个attr,⽽validform⽅法则是在元素上利⽤data⽅法来实现是否验证,思路基本⼀致,但是当元素是动态⽣成的时候我觉得还是ignore=ignore这个⽅法⽐较好,因为省事啊。 欢迎评论相互探讨。3.初始化参数如下是官⽹例⼦中给出的所有的可⽤参数页⾯地址:

1 $(".demoform").Validform({ 2 btnSubmit: "#btn_sub", //提交按钮 3 btnReset: ".btn_reset", 4 tiptype: 1, // 5 ignoreHidden: false, 6 dragonfly: false, 7 tipSweep: true, 8 label: ".label", 9 showAllError: false,10 postonce: true,11 ajaxPost: true,12 datatype: {13 "*6-20": /^[^s]{6,20}$/,14 "z2-4": /^[u4E00-u9FA5uf900-ufa2d]{2,4}$/,15 "username": function(gets, obj, curform, regxp) {16 //参数gets是获取到的表单元素值,obj为当前表单元素,curform为当前验证的表单,regxp为内置的⼀些正则表达式的引⽤;17 var reg1 = /^[w.]{4,16}$/,18 reg2 = /^[u4E00-u9FA5uf900-ufa2d]{2,8}$/;19 if ((gets)) {20 return true;21 }22 if ((gets)) {23 return true;24 }25 return false;26 //注意return可以返回true 或 false 或 字符串⽂字,true表⽰验证通过,返回字符串表⽰验证失败,字符串作为错误提⽰显⽰,返回false则⽤errmsg或默认的错误提⽰;27 },28 "phone": function() {29 // 5.0 版本之后,要实现⼆选⼀的验证效果,datatype 的名称 不 需要以 "option_" 开头;30 }31 },32 usePlugin: {33 swfupload: {},34 datepicker: {},35 passwordstrength: {},36 jqtransform: {37 selector: "select,input"38 }39 },40 beforeCheck: function(curform) {41 //在表单提交执⾏验证之前执⾏的函数,curform参数是当前表单对象。42 //这⾥明确return false的话将不会继续执⾏验证操作;43 },44 beforeSubmit: function(curform) {45 //在验证成功后,表单提交前执⾏的函数,curform参数是当前表单对象。46 //这⾥明确return false的话表单将不会提交;47 },48 callback: function(data) {49 //返回数据data是json对象,{"info":"demo info","status":"y"}50 //info: 输出提⽰信息;51 //status: 返回提交数据的状态,是否提交成功。如可以⽤"y"表⽰提交成功,"n"表⽰提交失败,在ajax_⽂件返回数据⾥⾃定字符,主要⽤在callback函数⾥根据该值执⾏相应的回调操作;52 //你也可以在ajax_⽂件返回更多信息在这⾥获取,进⾏相应操作;53 //ajax遇到服务端错误时也会执⾏回调,这时的data是{ status:**, statusText:**, readyState:**, responseText:** };54

55 //这⾥执⾏回调操作;56 //注意:如果不是ajax⽅式提交表单,传⼊callback,这时data参数是当前表单对象,回调函数会在表单验证全部通过后执⾏,然后判断是否提交表单,如果callback⾥明确return false,则表单不会提交,如果return true或没有return,则会提交57 }58 });

3.1 如何使⽤ajax提交数据,⽽不提交表单。1 beforeSubmit: function (curform) {2 addNewAd();3 return false;4 //这⾥明确return false的话表单将不会提交;5 }

直接在beforeSubmit中加上对应的ajax提交函数,并加上return false就可以保证表单不会被提交⽽执⾏我们的ajax函数。3.2 tiptype⽤来设置提⽰信息的展⽰⽅式,可⽤的值有:1、2、3、4和function函数,默认tiptype为1。1代表⾃定义弹出框提⽰。2代表侧边提⽰,会在当前元素的⽗级的next对象的⼦级查找显⽰提⽰信息的对象。如果不存在就会创建1 if (tiptype == 2) {2 if ($(this).parent().next().find(".Validform_checktip").length == 0) {3 $(this).parent().next().append("");4 $(this).siblings(".Validform_checktip").remove();5 }6 }

3也是代表的侧边提⽰,不过它是会在当前元素的siblings对象中查找显⽰提⽰信息的对象同样也是不存在就会创建1 if (tiptype == 3) {2 if ($(this).siblings(".Validform_checktip").length == 0) {3 $(this).parent().append("");4 $(this).parent().next().find(".Validform_checktip").remove();5 }6 }

4也是侧边显⽰会在当前元素的⽗级的next对象下查找显⽰提⽰信息的对象还可以传⼊⾃定义函数,实现你想要的提⽰效果。以上就是我认为中需要注意的事情和使⽤⽅法的展⽰,欢迎讨论,拍砖。