既然你都搜到这来了,那肯定国内都没有找到这个问题的详解。
下面是一个简单的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”,通用性比较好