1. 什么是layui表单验证
Layui是一套开源的前端UI框架,它提供了一些常用的组件和工具函数,可以方便地进行前端页面的开发。其中,表单验证是layui提供的一个非常重要的功能,可以帮助我们对用户输入的内容进行检查,确保数据的合法性,提高了页面的安全性和用户体验。
2. 表单验证的基本用法
在layui中,表单验证需要借助form模块来实现。一般来说,我们需要在HTML中定义form元素,并且添加一些input、textarea等表单元素,然后在JavaScript中初始化form模块,并指定验证规则。具体代码可以参考下面的例子:
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">用户名</label>
<div class="layui-input-block">
<input type="text" name="username" required lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-block">
<input type="password" name="password" required lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="login">登录</button>
</div>
</div>
</form>
在上面的代码中,我们使用了form模块提供的lay-verify属性来指定了用户名和密码的验证规则,其中required代表必填项,如果用户没有填写,则会提示“请输入XXXX”。另外,我们还使用了一个lay-filter属性,用于指定表单提交的回调函数,这个可以在JavaScript中实现。具体可以参考下面的代码:
layui.use(['form'], function() {
var form = layui.form;
form.on('submit(login)', function(data) {
console.log(data.field);
return false;
});
});
在上面的代码中,我们使用了一个form.on方法来监听了表单的提交事件,并指定了一个回调函数。这个回调函数中的data.field保存了表单中所有的数据,我们可以在这个函数中对数据进行处理,比如验证等等。
3. 常用的验证规则
在layui中,有很多内置的验证规则可以供我们使用,比如required、phone、email等等,可以有效地帮助我们对用户的输入进行检查,从而确保数据的安全和正确性。具体可以参考下面的列表:
required:必填项
phone:手机号
email:邮箱
url:网址
number:数字
date:日期
identity:身份证号
password:密码
verify:验证码
除了上面的内置规则之外,我们还可以通过正则表达式自定义规则,具体可以参考下面的代码:
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">自定义规则</label>
<div class="layui-input-block">
<input type="text" name="myrule" required lay-verify="myrule" placeholder="请输入内容" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="login">验证</button>
</div>
</div>
</form>
在上面的代码中,我们使用了自定义的验证规则myrule,具体定义可以参考下面的JavaScript代码:
layui.use(['form'], function() {
var form = layui.form;
form.verify({
myrule: [/^\w{4,16}$/, '请输入4到16位字母、数字、下划线']
});
form.on('submit(login)', function(data) {
console.log(data.field);
return false;
});
});
在上面的代码中,我们使用了form.verify方法来定义了一个自定义规则myrule,这个规则是正则表达式/\w{4,16}/,表示必须是4到16位的字母、数字或下划线。如果用户的输入不符合这个规则,就会提示“请输入4到16位字母、数字、下划线”。
4. 使用场景举例
4.1 登录表单验证
在网站中,登录表单是非常常见的,用户需要输入用户名和密码来登录系统。如果没有合适的验证机制,容易被黑客攻击,从而导致数据泄露等安全问题,因此,登录表单必须要有严格的验证规则。下面是一个简单的登录表单示例:
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">用户名</label>
<div class="layui-input-block">
<input type="text" name="username" required lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-block">
<input type="password" name="password" required lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">验证码</label>
<div class="layui-input-block">
<input type="text" name="captcha" required lay-verify="required" placeholder="请输入验证码" autocomplete="off" class="layui-input captcha">
<img src="captcha.php" alt="" class="captcha-img" onclick="this.src='captcha.php'+Math.random()">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="login">登录</button>
</div>
</div>
</form>
在这个表单中,我们使用了required、phone、email等内置规则来验证用户名和密码的合法性,还添加了一个验证码输入框,用于防止恶意攻击。另外,我们使用JavaScript动态生成了一个图片验证码,让每次登录验证的验证码都不同,从而进一步提高了系统的安全性。
下面是对于这个表单的一个简单的验证函数:
layui.use(['form'], function() {
var form = layui.form;
form.verify({
username: [/^\w{4,16}$/, '用户名必须是4到16位字母、数字、下划线'],
password: [/^[\S]{6,12}$/, '密码必须是6到12位的非空字符'],
captcha: function(value) {
if ($.trim(value).length != 4) {
return '验证码必须是4位数字';
}
}
});
form.on('submit(login)', function(data) {
console.log(data.field);
// TODO: 表单提交逻辑
return false;
});
});
在这个验证函数中,我们使用了username、password和captcha三个自定义规则,其中username必须是4到16位的字母、数字或下划线,password必须是6到12位的非空字符,captcha必须是4位数字。如果用户在输入时不符合规则,则会弹出提示框,防止用户误操作。
4.2 注册表单验证
在网站中,注册表单用于收集用户的个人信息,这些信息通常包括用户名、密码、邮箱、手机号等。如果没有合适的验证机制,容易导致用户输入错误信息,从而无法获得相应的服务,因此,注册表单也必须要有严格的验证规则。下面是一个简单的注册表单示例:
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">用户名</label>
<div class="layui-input-block">
<input type="text" name="username" required lay-verify="required|username" placeholder="请输入用户名" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-block">
<input type="password" name="password" required lay-verify="required|password" placeholder="请输入密码" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">确认密码</label>
<div class="layui-input-block">
<input type="password" name="confirm_password" required lay-verify="required|confirm_password" placeholder="请再次输入密码" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">邮箱</label>
<div class="layui-input-block">
<input type="text" name="email" required lay-verify="required|email" placeholder="请输入邮箱" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">手机号</label>
<div class="layui-input-block">
<input type="text" name="phone" required lay-verify="required|phone" placeholder="请输入手机号" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="register">注册</button>
</div>
</div>
</form>
在这个表单中,我们使用了内置规则和自定义规则来验证用户名、密码、邮箱和手机号的合法性,比如,username必须是4到16位的字母、数字或下划线,password必须是6到12位的非空字符,email必须是合法的邮箱地址,phone必须是合法的手机号码。另外,我们还添加了确认密码的输入框,用于增加用户输入的正确性。
下面是对于这个表单的一个简单的验证函数:
layui.use(['form'], function() {
var form = layui.form;
form.verify({
username: [/^\w{4,16}$/, '用户名必须是4到16位字母、数字、下划线'],
password: [/^[\S]{6,12}$/, '密码必须是6到12位的非空字符'],
confirm_password: function(value, item) {
var password = $('input[name=password]').val();
if (value != password) {
return '两次输入的密码不一致';
}
},
email: function(value, item) {
if (!/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(value)) {
return '请输入正确的邮箱地址';
}
},
phone: [/^1[3456789]\d{9}$/, '手机号码格式不正确']
});
form.on('submit(register)', function(data) {
console.log(data.field);
// TODO: 表单提交逻辑
return false;
});
});
在这个验证函数中,我们使用了username、password、confirm_password、email和phone五个自定义规则,其中,confirm_password需要与password保持一致,如果不一致就会弹出提示框,email必须是合法的邮箱地址,phone必须是合法的手机号码。如果用户在输入时不符合规则,则会弹出提示框,防止用户误操作。
5. 总结
本文主要介绍了layui表单验证的基本用法、常用的验证规则、使用场景举例等内容。通过学习本文,相信读者已经对layui表单验证有了初步了解,并掌握了一些验证规则的使用方法和实际应用场景。当然,layui表单验证还有很多高级用法和细节,需要读者自行深入研究和探索。