一、Layui介绍
Layui是一款基于Jquery库封装的后台管理系统UI框架,包括了丰富的组件和简单易懂的文档。在实际应用中,表单校验是一项非常重要的工作,而Layui提供了非常好用的表单校验组件,下面我们就来介绍一下Layui的表单校验方法。
二、Layui表单校验的基本用法
在使用Layui进行表单校验时,需要引入Layui的表单模块,该模块包含了表单校验所需的所有组件和方法。
<script src="https://cdn.bootcdn.net/ajax/libs/layui/2.5.6/layui.min.js" integrity="sha384-bGu3jCPhnW2wk30/pj2wDKMGq3Aj1Y/8O8aOy8au/5LmaxzFTCccwy4M3wzBZJ7x" crossorigin="anonymous"></script>
layui.use(['form', 'jquery'], function () {
var form = layui.form;
var $ = layui.jquery;
// 表单校验代码
});
2.1 单个表单校验
Layui表单校验组件同样适用于单个表单的校验,通过表单的lay-verify属性来进行校验。
<form class="layui-form" lay-filter="example-form">
<div class="layui-form-item">
<label class="layui-form-label">必填项</label>
<div class="layui-input-block">
<input type="text" name="required" lay-verify="required" autocomplete="off" placeholder="请输入">
</div>
</div>
</form>
上述代码中,我们定义了一个必填项,通过lay-verify="required"来指定该表单为必填项,如果该表单未填写,则无法提交表单。
2.2 针对某一类表单的校验
除了单个表单校验外,Layui还支持对一类表单进行校验,该类表单可以通过form元素的class或者name属性来定义,在校验时,通过form元素上的lay-filter属性指定表单的名称,如下所示:
<form class="layui-form" lay-filter="example-form">
<div class="layui-form-item">
<label class="layui-form-label">必填项</label>
<div class="layui-input-block">
<input type="text" name="required" lay-verify="required" autocomplete="off" placeholder="请输入">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">Email</label>
<div class="layui-input-block">
<input type="text" name="email" lay-verify="email" autocomplete="off" placeholder="请输入">
</div>
</div>
</form>
在上面的代码中,我们定义了两个表单元素,一个为必填项,一个为Email地址。通过定义name属性来进行表单的分类,这样我们就可以通过表单名进行校验,如下所示:
// 针对名称为example-form的表单进行校验
form.on('submit(formDemo)', function (data) {
console.log(data.field);
return false;
});
2.3 更多的校验规则
Layui表单校验组件还提供了非常丰富的校验规则,可以很好地满足用户的需求。
required:必填项
phone:手机号码
email:email地址
url:网址
number:数字
date:日期
identity:身份证号
password:密码
所有的校验规则都可以通过lay-verify来进行设置,例如,在校验身份证号时,我们可以使用如下代码:
<input type="text" lay-verify="identity" name="identity" placeholder="请输入身份证号">
三、Layui表单校验的高级用法
3.1 自定义校验规则
除了使用Layui提供的校验规则外,我们还可以根据需要自定义校验规则。
// 自定义邮政编码校验规则
form.verify({
zipCode: function (value, item) {
if (!new RegExp("^\\d{6}$").test(value)) {
return '邮政编码格式不正确';
}
}
});
在上述代码中,我们自定义了一个邮政编码的校验规则,通过form.verify()方法来进行注册,其中zipCode为规则的名称,value代表输入的值,item代表当前表单元素的属性,通过校验方法可以获取到输入的值,并返回校验结果。通过定义好的规则名称即可在表单中进行使用。
<input type="text" lay-verify="zipCode" name="zipCode" placeholder="请输入邮政编码">
3.2 自定义错误提示信息
在Layui的表单校验中,我们还可以自定义错误提示信息,方便用户更好地理解错误原因。
// 自定义错误提示信息
form.verify({
username: function(value, item){
if(!/^[a-zA-Z0-9]+$/.test(value)){
return '用户名只能是字母或数字';
}
}
});
在上述代码中,我们定义了一个校验规则,校验用户名只能是字母或数字,如果校验不通过,将会返回自定义的错误提示信息。
3.3 自定义正则表达式
Layui的表单校验组件还支持自定义正则表达式,非常适合一些特定的校验场景。
// 自定义正则表达式,匹配省份名称
form.verify({
province: [/^[\\u4e00-\\u9fa5]+$/, '省份必须是汉字']
});
以上代码,我们定义了一个校验规则,校验省份名称只能是汉字,如果校验不通过,则提示自定义错误信息。
3.4 多重校验
在Layui表单校验中,我们还可以进行多重校验,使用数组来定义多个校验规则。
// 多重校验
form.verify({
requireAndEmail:[/^[\S]+$/, '请输入信息'],[/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/, '邮箱格式不正确']
});
以上代码中,我们定义了一个多重校验规则,校验Email地址的同时不能省略该信息,如果校验不通过,则分别提示参数中的错误信息。
3.5 异步校验
在实际应用中,很多校验需要与后端进行交互,在Layui的表单校验组件中,我们同样可以实现异步校验功能。
// 异步校验
form.verify({
checkName: function(value, item){
var checkResult = false;
// 发送请求,进行异步校验
$.ajax({
url:'http://example.com/checkname',
data:{'name':value},
success:function(result){
checkResult = result.code == 0;
},
async:false
});
if(!checkResult){
return '该用户名已被占用';
}
}
});
以上代码中,我们定义了一个异步校验规则,通过AJAX请求的方式,与后端进行交互,如果检测到用户名已被占用,则返回相应错误信息。
四、结语
通过Layui的表单校验组件,我们可以有效地避免表单提交时出现问题,并且根据不同的校验需求,进行灵活的定制。