关闭

Validform使用入门详解

208人阅读 评论(0) 收藏 举报
分类:

扩展:

$("form.demo").Validform({
    datatype: {
              "empty": /^\s*$/
              }
});


5.2版本之后,datatype支持规则累加或单选。用","分隔表示规则累加;用"|"分隔表示规则多选一,即只要符合其中一个规则就可以通过验证,绑定的规则会依次验证,只要验证通过,后面的规则就会忽略不再比较。如绑定datatype="m|e",表示既可以填写手机号码,也能填写邮箱地址,如果知道填入的是手机号码,那么就不会再检测他是不是邮箱地址;datatype="zh,s2-4",表示要符合自定义类型"zh",也要符合规则"s2-4".

    注:
    5.2.1版本之后,datatype支持:
    直接绑定正则:如可用这样写datatype="/\w{3,6}/i",要求是3到6位的字母,不区分大小写;
    支持简单的逻辑运算:如datatype="m | e, *4-18 | /\w{3,6}/i | /^validform\.rjboy\.cn$/",
    这个表达式的意思是:可以是手机号码;或者是邮箱地址,但字符长度必须在4到18位;或者是3到6位的字母,不区分大小写;或者输入validform.rjboy.cn,区分大小写。这里","分隔相当于逻辑运算里的"&&"; "|"分隔相当于逻辑运算里的"||";不支持括号运算。
    nullmsg
    当表单元素值为空时的提示信息,不绑定,默认提示"请填入信息!".
    如:nullmsg="请填写用户名!"
    5.3版开始,对于没有绑定nullmsg的对象,会自动查找class为Validform_label下的文字作为提示文字:
    如这样的html结构:
    <span class="Validform_label">*用户名:</span><input type="text" val="" datatype="s" />
    当这个文本框里没有输入时的出错信息就会是:"请输入用户名!"
    这里Validform_label跟input之间的位置关系,不一定是要同级关系,同级里没有找到的话,它还会在同级的子级、父级的同级、父级的同级的子级里查找。
    sucmsg 5.3+
    当表单元素通过验证时的提示信息,不绑定,默认提示"通过信息验证!".
    如:sucmsg="用户名还未被使用,可以注册!"
    5.3版开始,也可以在实时验证返回的json数据里返回成功的提示文字,请查看附加属性ajaxurl的介绍。
    errormsg
    输入内容不能通过验证时的提示信息,默认提示"请输入正确信息!".
    如:errormsg="用户名必须是2到4位中文字符!"
    5.3版开始,Validform可以根据你绑定的datatype智能的输出相应出错信息,具体介绍请查看tipmsg
    ignore
    绑定了ignore="ignore"的表单元素,在有输入时,会验证所填数据是否符合datatype所指定数据类型,
    没有填写内容时则会忽略对它的验证;
    recheck
    表单里面经常需要检查两次密码输入是否一致,recheck就是用来指定需要比较的另外一个表单元素。
    如:recheck="password1",那么它就会拿当前元素的值跟该表单下,name为"password1"的元素比较。
    tip
    表单里经常有些文本框需要默认就显示一个灰色的提示文字,当获得焦点时提示文字消失,失去焦点时提示文字显示。tip属性就是用来实现这个效果。它通常和altercss搭配使用。
    如<input type="text" value="默认提示文字" class="gray intxt" tip="默认提示文字" altercss="gray" />
    altercss
    它需要和tip属性配合使用,altercss指定的样式名,会在文本框获得焦点时被删除,没有输入内容而失去焦点时重新加上。
    ajaxurl
    指定ajax实时验证的后台文件的地址。
    后台页面如valid.php文件中可以用 $_POST["param"] 接收到值,Ajax中会POST过来变量param和name.param是文本框的值,name是文本框的name属性。
    5.2版本开始,可以在ajaxurl指定的url后绑定参数,如:ajaxurl="valid.php?myparam1=value1&myparam2=value2"; 5.3.1开始,地址后面附带的参数内部不再做另外解析,仍附带在地址后面,所以需要用GET方式去获取地址后面带的参数。
    5.3之前的版本中,该文件输出的字符会作为错误信息显示在页面上,如果验证通过需输出小写字母"y".
    在5.3版中,实时验证的返回数据做了调整,须是含有status值的json数据!跟callback里的ajax返回数据格式统一,建议不再返回字符串"y"或"n".目前这两种格式的数据都兼容。
    注:
    如果ajax校验通过,会在该元素上绑定validform_valid值为true.可以通过设置该值来控制验证能不能通过,如验证码的验证,第一次验证通过后,不小心右点击了下验证码图片,验证码换了,但是仍然指示这个对象已经通过了验证,这时可以手动调整该值:$("#name")[0].validform_valid="false".
    怎样设置ajax的参数,具体可以查看Validform对象的config方法。
    plugin
    指定需要使用的插件。
    5.3版开始,对于日期、swfupload和密码强度检测这三个插件,绑定了plugin属性即可以初始化对应的插件,可以不用在validform初始化时传入空的usePlugin了。
    如,你要使用日期插件,5.3之前版本需要这样初始化:
    $(".demoform")。Validform({
    usePlugin:{
    datepicker:{}
    }
    });
    5.3版开始,不需要传入这些空对象了,只需在表单元素上绑定plugin="datepicker"就可以,初始化直接这样:
    $(".demoform")。Validform();
    初始化参数说明
    所有可用参数如下:
    [javascript]
    $<span style="color:#009900">(</span><span style="color:#3366CC">".demoform"</span><span style="color:#009900">)</span>.<span style="color:#660066">Validform</span><span style="color:#009900">(</span><span style="color:#009900">{</span><span style="color:#006600; font-style:italic"></span>
    btnSubmit<span style="color:#339933">:</span><span style="color:#3366CC">"#btn_sub"</span><span style="color:#339933">,</span>
    btnReset<span style="color:#339933">:</span><span style="color:#3366CC">".btn_reset"</span><span style="color:#339933">,</span>
    tiptype<span style="color:#339933">:</span><span style="color:#CC0000">1</span><span style="color:#339933">,</span>
    ignoreHidden<span style="color:#339933">:</span><span style="color:#003366; font-weight:bold">false</span><span style="color:#339933">,</span>
    dragonfly<span style="color:#339933">:</span><span style="color:#003366; font-weight:bold">false</span><span style="color:#339933">,</span>
    tipSweep<span style="color:#339933">:</span><span style="color:#003366; font-weight:bold">true</span><span style="color:#339933">,</span>
    label<span style="color:#339933">:</span><span style="color:#003366; font-weight:bold">".label"</span><span style="color:#339933">,</span>
    showAllError<span style="color:#339933">:</span><span style="color:#003366; font-weight:bold">false</span><span style="color:#339933">,</span>
    postonce<span style="color:#339933">:</span><span style="color:#003366; font-weight:bold">true</span><span style="color:#339933">,</span>
    ajaxPost<span style="color:#339933">:</span><span style="color:#003366; font-weight:bold">true</span><span style="color:#339933">,</span>
    datatype<span style="color:#339933">:</span><span style="color:#009900">{</span>
    <span style="color:#3366CC">"*6-20"</span><span style="color:#339933">:</span> <span style="color:#009966; font-style:italic">/^[^\s]{6,20}$/</span><span style="color:#339933">,</span>
    <span style="color:#3366CC">"z2-4"</span> <span style="color:#339933">:</span> <span style="color:#009966; font-style:italic">/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,4}$/</span><span style="color:#339933">,</span>
    <span style="color:#3366CC">"username"</span><span style="color:#339933">:</span><span style="color:#003366; font-weight:bold">function</span><span style="color:#009900">(</span>gets<span style="color:#339933">,</span>obj<span style="color:#339933">,</span>curform<span style="color:#339933">,</span>regxp<span style="color:#009900">)</span><span style="color:#009900">{</span>
    <span style="color:#006600; font-style:italic">//参数gets是获取到的表单元素值,obj为当前表单元素,curform为当前验证的表单,regxp为内置的一些正则表达式的引用;</span>
    <span style="color:#003366; font-weight:bold">var</span> reg1<span style="color:#339933">=</span><span style="color:#009966; font-style:italic">/^[\w\.]{4,16}$/</span><span style="color:#339933">,</span>
    reg2<span style="color:#339933">=</span><span style="color:#009966; font-style:italic">/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,8}$/</span><span style="color:#339933">;</span>
    <span style="color:#000066; font-weight:bold">if</span><span style="color:#009900">(</span>reg1.<span style="color:#660066">test</span><span style="color:#009900">(</span>gets<span style="color:#009900">)</span><span style="color:#009900">)</span><span style="color:#009900">{</span><span style="color:#000066; font-weight:bold">return</span> <span style="color:#003366; font-weight:bold">true</span><span style="color:#339933">;</span><span style="color:#009900">}</span>
    <span style="color:#000066; font-weight:bold">if</span><span style="color:#009900">(</span>reg2.<span style="color:#660066">test</span><span style="color:#009900">(</span>gets<span style="color:#009900">)</span><span style="color:#009900">)</span><span style="color:#009900">{</span><span style="color:#000066; font-weight:bold">return</span> <span style="color:#003366; font-weight:bold">true</span><span style="color:#339933">;</span><span style="color:#009900">}</span>
    <span style="color:#000066; font-weight:bold">return</span> <span style="color:#003366; font-weight:bold">false</span><span style="color:#339933">;</span>
    <span style="color:#006600; font-style:italic">//注意return可以返回true 或 false 或 字符串文字,true表示验证通过,返回字符串表示验证失败,字符串作为错误提示显示,返回false则用errmsg或默认的错误提示;</span>
    <span style="color:#009900">}</span><span style="color:#339933">,</span>
    <span style="color:#3366CC">"phone"</span><span style="color:#339933">:</span><span style="color:#003366; font-weight:bold">function</span><span style="color:#009900">(</span><span style="color:#009900">)</span><span style="color:#009900">{</span>
    <span style="color:#006600; font-style:italic">// 5.0 版本之后,要实现二选一的验证效果,datatype 的名称 不 需要以 "option_" 开头; </span>
    <span style="color:#009900">}</span>
    <span style="color:#009900">}</span><span style="color:#339933">,</span>
    usePlugin<span style="color:#339933">:</span><span style="color:#009900">{</span>
    swfupload<span style="color:#339933">:</span><span style="color:#009900">{</span><span style="color:#009900">}</span><span style="color:#339933">,</span>
    datepicker<span style="color:#339933">:</span><span style="color:#009900">{</span><span style="color:#009900">}</span><span style="color:#339933">,</span>
    passwordstrength<span style="color:#339933">:</span><span style="color:#009900">{</span><span style="color:#009900">}</span><span style="color:#339933">,</span>
    jqtransform<span style="color:#339933">:</span><span style="color:#009900">{</span>
    selector<span style="color:#339933">:</span><span style="color:#3366CC">"select,input"</span>
    <span style="color:#009900">}</span>
    <span style="color:#009900">}</span><span style="color:#339933">,</span>
    beforeCheck<span style="color:#339933">:</span><span style="color:#003366; font-weight:bold">function</span><span style="color:#009900">(</span>curform<span style="color:#009900">)</span><span style="color:#009900">{</span>
    <span style="color:#006600; font-style:italic">//在表单提交执行验证之前执行的函数,curform参数是当前表单对象。</span>
    <span style="color:#006600; font-style:italic">//这里明确return false的话将不会继续执行验证操作; </span>
    <span style="color:#009900">}</span><span style="color:#339933">,</span>
    beforeSubmit<span style="color:#339933">:</span><span style="color:#003366; font-weight:bold">function</span><span style="color:#009900">(</span>curform<span style="color:#009900">)</span><span style="color:#009900">{</span>
    <span style="color:#006600; font-style:italic">//在验证成功后,表单提交前执行的函数,curform参数是当前表单对象。</span>
    <span style="color:#006600; font-style:italic">//这里明确return false的话表单将不会提交; </span>
    <span style="color:#009900">}</span><span style="color:#339933">,</span>
    callback<span style="color:#339933">:</span><span style="color:#003366; font-weight:bold">function</span><span style="color:#009900">(</span>data<span style="color:#009900">)</span><span style="color:#009900">{</span>
    <span style="color:#006600; font-style:italic">//返回数据data是json对象,{"info":"demo info","status":"y"}</span>
    <span style="color:#006600; font-style:italic">//info: 输出提示信息;</span>
    <span style="color:#006600; font-style:italic">//status: 返回提交数据的状态,是否提交成功。如可以用"y"表示提交成功,"n"表示提交失败,在ajax_post.php文件返回数据里自定字符,主要用在callback函数里根据该值执行相应的回调操作;</span>
    <span style="color:#006600; font-style:italic">//你也可以在ajax_post.php文件返回更多信息在这里获取,进行相应操作;</span>
    <span style="color:#006600; font-style:italic">//ajax遇到服务端错误时也会执行回调,这时的data是{ status:**, statusText:**, readyState:**, responseText:** };</span>
    <span style="color:#006600; font-style:italic">//这里执行回调操作;</span>
    <span style="color:#006600; font-style:italic">//注意:如果不是ajax方式提交表单,传入callback,这时data参数是当前表单对象,回调函数会在表单验证全部通过后执行,然后判断是否提交表单,如果callback里明确return false,则表单不会提交,如果return true或没有return,则会提交表单。</span>
    <span style="color:#009900">}</span>
    <span style="color:#009900">}</span><span style="color:#009900">)</span><span style="color:#339933">;</span>
    参数说明:【所有参数均为可选项】
    必须是表单对象执行Validform方法,示例中".demoform"就是绑定在form元素上的class名称;
    btnSubmit
    指定当前表单下的哪一个按钮触发表单提交事件,如果表单下有submit按钮时可以省略该参数。示例中".btn_sub"是该表单下要绑定点击提交表单事件的按钮;
    btnReset
    ".btn_reset"是该表单下要绑定点击重置表单事件的按钮;
    tiptype
    可用的值有:1、2、3、4和function函数,默认tiptype为1. 3、4是5.2.1版本新增
    1=> 自定义弹出框提示;
    2=> 侧边提示(会在当前元素的父级的next对象的子级查找显示提示信息的对象,表单以ajax提交时会弹出自定义提示框显示表单提交状态);
    3=> 侧边提示(会在当前元素的siblings对象中查找显示提示信息的对象,表单以ajax提交时会弹出自定义提示框显示表单提交状态);
    4=> 侧边提示(会在当前元素的父级的next对象下查找显示提示信息的对象,表单以ajax提交时不显示表单的提交状态);
    如果上面的4种提示方式不是你需要的,你可以给tiptype传入自定义函数。通过自定义函数,可以实现你想要的任何提示效果:
    tiptype:function(msg,o,cssctl){
    //msg:提示信息;
    //o:{obj:*,type:*,curform:*},
    //obj指向的是当前验证的表单元素(或表单对象,验证全部验证通过,提交表单时o.obj为该表单对象),
    //type指示提示的状态,值为1、2、3、4, 1:正在检测/提交数据,2:通过验证,3:验证失败,4:提示ignore状态,
    //curform为当前form对象;
    //cssctl:内置的提示信息样式控制函数,该函数需传入两个参数:显示提示信息的对象 和 当前提示的状态(既形参o中的type);
    }
    具体参见demo页。
    tiptype不为1时,Validform会查找class为"Validform_checktip"的标签显示提示信息。tiptype=1时,会自动创建弹出框显示提示信息。
    Validform_checktip和表单元素之间的位置关系,会根据tiptype的值有对应的结构,上面已经做了说明。
    5.3版本开始,如果页面里没有显示出错信息的标签,会根据tiptype值自动创建Validform_checktip对象。
    ignoreHidden
    可用值: true | false.
    默认为false,当为true时对:hidden的表单元素将不做验证;
    dragonfly
    可用值: true | false.
    默认false,当为true时,值为空时不做验证;
    tipSweep
    可用值: true | false.
    默认为false, 5.3版中做了修正,在各种tiptype下, 为true时提示信息将只会在表单提交时触发显示,各表单元素blur时不会触发信息提示;
    label 5.3.1+
    选择符
    在没有绑定nullmsg时查找要显示的提示文字,默认查找".Validform_label"下的文字;
    showAllError
    可用值: true | false.
    默认为false,true:提交表单时所有错误提示信息都会显示;false:一碰到验证不通过的对象就会停止检测后面的元素,只显示该元素的错误信息;
    postonce
    可用值: true | false.
    默认为false,指定是否开启二次提交防御,true开启,不指定则默认关闭;
    为true时,在数据成功提交后,表单将不能再继续提交。
    ajaxPost
    可用值: true | false.
    默认为false,使用ajax方式提交表单数据,将会把数据POST到config方法或表单action属性里设定的地址;
    datatype
    传入自定义datatype类型,可以是正则,也可以是函数。
    datatyp:{
    "zh2-4":/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,4}$/,
    "phone":function(gets,obj,curform,regxp){
    //参数gets是获取到的表单元素值,
    //obj为当前表单元素,
    //curform为当前验证的表单,
    //regxp为内置的一些正则表达式的引用。
    //return false表示验证出错,没有return或者return true表示验证通过。
    }
    }
    具体示例请参考demo页;
    usePlugin
    目前已整合swfupload、datepicker、passwordstrength和jqtransform四个插件,在这里传入这些插件使用时需要传入的参数。datepicker在Validform内调用时另外扩展了几个比较实用的参数,具体请参考demo页;
    beforeCheck(curform)
    在表单提交执行验证之前执行的函数,curform参数获取到的是当前表单对象。
    函数return false的话将不会继续执行验证操作;
    beforeSubmit(curform)
    在表单验证通过,提交表单数据之前执行的函数,data参数是当前表单对象。
    函数return false的话表单将不会提交;
    callback
    在使用ajax提交表单数据时,数据提交后的回调函数。返回数据data是Json对象:
    {"info":"demo info","status":"y"}
    info: 输出提示信息,
    status: 返回提交数据的状态,是否提交成功,"y"表示提交成功,"n"表示提交失败,在ajax_post.php文件返回数据里自定字符,主要用在callback函数里根据该值执行相应的回调操作。你也可以在ajax_post.php文件返回更多信息在这里获取,进行相应操作;
    如果不是ajax方式提交表单,传入callback,这时data参数是当前表单对象,回调函数会在表单验证全部通过后执行,然后判断是否提交表单,如果callback里return false,则表单不会提交,如果return true或没有return,则会提交表单。
    5.3版开始,ajax遇到服务端错误时也会执行回调,这时的data是{ status:**, statusText:**, readyState:**, responseText:** }
    Validform对象[方法支持链式调用]
    如示例 var demo=$(".formsub")。Validform(),那么demo对象会有以下属性和方法可以调用:
    tipmsg【object】
    如:demo.tipmsg.s="error! no message inputed.";
    通过该对象可以修改除 tit 以外的其他提示文字,这样可以实现同一个页面的不同表单使用不同的提示文字。
    具体可修改的提示文字
    $.Tipmsg={//默认提示文字;
    tit:"提示信息",
    w:{
    "*":"不能为空!",
    "*6-16":"请填写6到16位任意字符!",
    "n":"请填写数字!",
    "n6-16":"请填写6到16位数字!",
    "s":"不能输入特殊字符!",
    "s6-18":"请填写6到18位字符!",
    "p":"请填写邮政编码!",
    "m":"请填写手机号码!",
    "e":"邮箱地址格式不对!",
    "url":"请填写网址!"
    },
    def:"请填写正确信息!",
    undef:"datatype未定义!",
    reck:"两次输入的内容不一致!",
    r:"通过信息验证!",
    c:"正在检测信息…",
    s:"请{填写|选择}{0|信息}!",
    v:"所填信息没有经过验证,请稍后…",
    p:"正在提交数据…"
    };
    要修改tit(弹出框的标题文字)的话,可以这样:$.Tipmsg.tit="Message Box",则弹出框的标题文字会换成"Message Box"
    注:5.3.2+
    $.Tipmsg.w里,形如"*6-16"的提示文字,里面的数字是会被替换的。如绑定datatype="*2-18",那它默认的出错信息就会是"请填写2到18位任意字符!",可以通过$.Tipmsg.w或Validform对象的tipmsg属性修改和扩展默认错误信息,如果你已经设置了"zh2-4"的提示信息是"2-4位中文",那么"zh2-8"出错的信息就自动会是:"2-8位中文".对于自定义的datatype,在扩展默认信息时,注意错误信息的名字要跟datatype名字一样,如上面示例是:$.Tipmsg.w["zh2-4"]="2-4位中文".对于多页面或一个页面多表单有相同datatype来说,在$.Tipmsg.w或Validform对象的tipmsg属性中扩展默认提示信息是个很好的选择。
    5.3.1+
    $.Tipmsg.s是用来指定在没有绑定nullmsg时的默认提示信息。"{0}"是会被找到的label参数指定的对象或Validform_label里的文字替换掉的,"{填写|选择}"里的文字在绑定了"recheck"属性的表单元素上检测时是会不显示的,当前验证对象是radio、checkbox或select时,会输出"选择",是其他类型的元素时会输出"填写"和后面的"信息".
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:40705次
    • 积分:976
    • 等级:
    • 排名:千里之外
    • 原创:38篇
    • 转载:131篇
    • 译文:0篇
    • 评论:1条
    最新评论