一、validform是什么?

           validform是一款智能的表单验证js插件,它是基于jQuery库与css,我们只需要把表单对象放入,

            就可以对整个表单数据进行验证,而不需要每次验证都要写个js脚本。



二、validform优点



            1. 自定义你想要的信息提示效果 (弹窗提示 ----  右侧提示)                 

            2. 智能的错误信息提示 


           3. 可以指定需要验证的和不需要验证的区域

                    例如

                            ignore

                                    绑定了ignore="ignore"的表单元素,在有输入时, 会验证所填数据是否符合datatype所指定数据类型,

                                    没有填写内容时则会忽略对它的验证;

           4. 基于form对象操作 


        5.validform与js脚本的区别

                                validform是对js进行了封装

                       js脚本验证字符串类型:6到18位字符串 :   /^[\u4E00-\u9FA5\w\.\s]{6,18}$/ 

                                                还要if进行判断,使用起来非常麻烦

                       而validform 直接在需要验证的input框中使用 datatype="s6-18"



<!--引入css  -->
<link rel="stylesheet" href="<%=request.getContextPath()%>/js/validform/css/style.css" type="text/css" media="all" />
<!-- 引入jquery -->
<script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery/jquery-1.7.js"></script>
<!--引入validform -->
<script type="text/javascript" src="<%=request.getContextPath()%>/js/validform/validform-js/Validform_v5.3.2(1)/Validform_v5.3.2_ncr_min.js"></script>


  //初始化:

$(function(){
     var demo=$(".demoform").Validform({
});
})


三、使用步骤

            1、引入css,js

            2、定义载体

            3、初始化                



datatype



  传入自定义datatype类型,可以是正则,也可以是函数


            *:检测是否有输入,可以输入任何字符,不留空即可通过验证;
            *6-16:检测是否为6到16位任意字符;
            n:数字类型;
            n6-16:6到16位数字;
            s:字符串类型;
            s6-18:6到18位字符串;
            p:验证是否为邮政编码;
            m:手机号码格式;
            e:email格式;
            url:验证字符串是否为网址。

            中文需要自己定义


            <input datatype="n2-6">




datatype函数(初始化参






 如果数据类型与底层封装的数据类型相同 那么我们自定义的优先级大于底层封装



            datatype:{

                       "m":/^[1][1,3,5,8,4]\d{9}$/,    

                        "china2-6":/^[\u4e00-\u9fa5]{2,6}$/,    

              }




nullmsg (null提示)

            当表单元素值为空时的提示信息,不绑定,默认提示"请填入信息!"。
            如:nullmsg="请填写用户名!"

            <input datatype="n2-6" nullmsg="请填写密码">


errormsg(错误提示)
            输入内容不能通过验证时的提示信息,默认提示"请输入正确信息!"。
            如:errormsg="用户名必须是2到4位中文字符!"


             <input datatype="n2-6" errormsg="请填写2-6位数字密码">





recheck(二次验证,保证输入的一致性)

        常用于:确认密码



               recheck就是用来指定需要比较的另外一个表单元素。


 如:密码文本中name="pw" 那么我们确认密码文本中绑定上 recheck="密码文本中name的值"                



                密码<input datatype="n2-6" name="pw" errormsg="请输入2-6位数字" nullmsg="请填写密码">

                确认密码<input datatype="n2-6" recheck="pw" errormsg="俩次密码不一致" nullmsg="请填写密码1">









tiptype(初始化参

                可以为1、2 、3、4和 自定义函数。1 表示弹出提示框,是默认值(
































使用1和3就够了





                1=> 自定义弹出框提示;








(常用)

                2=> 侧边提示(会在当前元素的父级的next对象的子级查找显示提示信息的对象,表单以ajax提交时会弹出自定义提示框显示表单提交状态);

                                    (该元素的父节点的下一个节点中显示)没什么卵用
                3=> 侧边提示(会在当前元素的siblings
(相邻)对象中查找显示提示信息的对象,表单以ajax提交时会弹出自定义提示框显示表单提交状态);

                                   (该元素的相邻元素)(常用)
                4=> 侧边提示(会在当前元素的父级的next对象下查找显示提示信息的对象,表单以ajax提交时不显示表单的提交状态);





                                   (该元素的父节点的下一个节点中显示)












没什么卵用






label(html中的<label>)

                意思就是聚焦 将label中所有的内容聚焦在一起作为一个整体



tip   


            表单里经常有些文本框需要默认就显示一个灰色的提示文字,当获得焦点时提示文字消失,失去焦点时提示文字显示。

            tip属性就是用来实现这个效果。它和altercss搭配使用。
             如<input type="text" value="默认提示文字" tip="默认提示文字" altercss="任意写" />

                    value与tip的值必须是相同的











altercss   


           它需要和tip属性配合使用,altercss指定的样式名,会在文本框获得焦点时被删除,没有输入内容而失去焦点时重新加上。



















btnSubmit(提交)(初始化参

                指定当前表单下的哪一个按钮触发表单提交事件,如果表单下有submit按钮时可以省略该参数。

                如:


































btnSubmit:"#sub"


















是该表单下要绑定点击提交表单事件的按钮;

btnReset(重置)(初始化参
                 如:
btnReset:"#res"是该表单下要绑定点击重置表单事件的按钮;





ajaxurl:(进行实时验证)

        使用 ajaxurl 时首先会对我们定义的datatype进行验证,只有验证通过后才会请求方法数据。

           前台到后台:

                        前台:

                                在需验证的文本中绑定 ajaxurl 属性 后跟上路径,当我们失去光标时会直接请求我们定义的方法

                        后台:



    ajaxurl指定的方法可以接收到Post方式传过来的两个值,后台接收分别是param和name(后台定义的属性驱动),param是该元素的值.





                               name是该元素的name属性值。(可忽略)







                   后台往前台:






                            后台:






                                    使用ajaxurl后台往前台传值须是含有status(状态) info(提示信息)值的json数据!




                                     status的值 成功为小写字母 "y" 失败为小写字母 "n" (不然样式会出错)

                            前台会自动识别






 <input type="text" ajaxurl="validformAction!toValidform.action" name="valid.ename" datatype="china">




beforeSubmit()(初始化参数

          函数内可以调用js 进行判断等等
                在表单验证通过,提交表单数据之前执行的函数                函数return false的话表单将不会提交;

                    如:


                                beforeSubmit:function(){

                                insertEmpInfo();//调用增加方法(ajax)

                                //return false;

                         }, 


完整demo:



$(function () {

$("#formID").Validform({ //验证
btnSubmit: "#submitBtn",
tiptype: 2,
tipSweep: true,
beforeSubmit: function () {
saveData();
return false;
}
});


layui.use('upload', function () {
var $ = layui.jquery
, upload = layui.upload;

upload.render({
elem: '#test1'
, url: '/WebAccount/UploadAnKangMa/'
, multiple: true
, accept: 'file' //普通文件
, exts: 'jpg|jpeg|gif|png|bmp'
, size: 1024 * 1
, before: function (obj) {
//预读本地文件示例,不支持ie8
obj.preview(function (index, file, result) {
$('#demo1').append('<img src="' + result + '" alt="' + file.name + '" class="layui-upload-img">')
});
}
, done: function (res) {
if (res.code != 200) {
layer.alert(res.msg)
return false;
}
$('#hidPic').val(res.fileName);
var demoText = $('#demoText1');
demoText.html('<span style="color: #FF5722; margin-left:10px;">上传成功</span>');

}
});
});


});

function saveData() {
var index = layer.load(0);
$.ajax({
type: "Post",
url: "/WebAccount/Participants/",
data: $('#formID').serialize(),
dataType: "json",
success: function (data) {
layer.close(index);
if (data.Ret == 0) {
layer.alert(data.Msg, {
title: false,
shift: 4
});
}
else {
layer.alert(data.Msg, {
title: false,
shift: 4
}, function () {
parent.location.reload();
});
}
}
});
}