既然你都搜到这来了,那肯定国内都没有找到这个问题的详解。
下面是一个简单的form
<form class="layui-form">
<div class="row">
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-block">
<input type="password" name="password" id="passwd" lay-verify="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="password" lay-verify="repassword" placeholder="" autocomplete="off" class="layui-input">
</div>
</div>
</div>
</form>
lay-verify=”required”大家肯定用得比较多,意思是验证必须输入。
那现在有个需求:
- 确认密码与密码一致;
- 密码需要6-20位;
我们可以使用layui其丰富的组件思想,使用layui.use(‘form’, function(){ xxx })。
详细JS如下:
/**
* 表单监听form
*/
layui.use('form', function(){
form = layui.form;
//表单验证
form.verify({
password: [/(.+){6,20}$/, '密码必须6到12位'],
repassword: function(value){
var repassvalue = $('#passwd').val();
if(value != repassvalue){
return '两次输入的密码不一致!';
}
}
});
})
即可以在表达提交的时候,自动会去先行执行form.verify里面的自定义验证规则:
- password: [xxx] 当HTML元素中使用了lay-verify=”password”时触发 [/(.+){6,20}$/, ‘密码必须6到12位’],正则匹配内容,若失败则将第二个参数的文本输出。
- repassword: function(value){} 当HTML元素中使用了lay-verify=”repassword”时触发,此处手动用JQ的选择器(也可原生JS选择器)取到password的值,而确认密码的值因为当前作用域在当前<input>元素上,即value变量的值是input的value属性,之后就可以比较密码与确认密码了。同样,return出去的参数可以使失败后的文本输出。
另一种通用性比较强的做法:
<div class="row">
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-block">
<input type="password" id="edit_password" name="password" 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" data-check="edit_password" name="password" lay-verify="required|checkRepeat" placeholder="" autocomplete="off" class="layui-input">
</div>
</div>
</div>
//自定义验证规则
form.verify({
checkRepeat: function(value, dom) {
var password = $('#' + $(dom).data('check')).val();
if (value !== password) {
return '两次输入不一致';
}
}
});
- checkRepeat: function(value, dom){} 当HTML元素中使用了lay-verify=”checkRepeat”时触发,这里在确认密码的input元素内加入data-check=”密码框的ID”,这样所以更改“框的ID”,通用性比较好