导航

前端UI框架之layUI学习

Posted on 2017-12-18 22:45  小飞博客  阅读(3729)  评论(0编辑  收藏  举报

用layUI框架来进行我们的页面速写,还是非常不错的,虽然2016年诞生,在我使用的过程中,觉得比bootstrap更轻盈点,总结下用的最多的组件.

form表单下拉框:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>layui前端框架学习(一)表单</title>
 6     <link rel="stylesheet" href="./layui/css/layui.css">
 7 </head>
 8 <body>
 9 <div id="wrap">
10     <div class="layui-form">
11       <div class="layui-form-item">
12         <div class="layui-input-block">
13           <select name="city" lay-verify="required"  lay-filter="test">
14             <option value=""></option>
15             <option value="0">北京</option>
16             <option value="1">上海</option>
17             <option value="2">广州</option>
18             <option value="3">深圳</option>
19             <option value="4">杭州</option>
20           </select>
21         </div>
22       </div>
23   </div>
24 </div>
25 </div>
26 <div id="box"></div>
27 </body>
28 <script src="./layui/layui.js"></script>
29 <script src="./layui/layer/layer.js"></script>
30 <script src="jquery-1.8.3.min.js"></script>
31 <script>
32 layui.use('form', function(){
33   var form = layui.form;
34   form.on('select(test)', function(data){
35       console.log(data.elem); //得到select原始DOM对象
36       console.log(data.value); //得到被选中的值
37       console.log(data.othis); //得到美化后的DOM对象
38       var value=(data.value==0)?'北京':((data.value==1)?'上海':((data.value==2)?'广州':((data.value==3)?'深圳':'杭州')));
39       $('#box').html(value);
40     });
41 }); 
42 </script>
43 </html>

以上代码是form表单中的下拉框为主角,js代码表示依赖form组件,并监听lay-filter="test"这个下拉框,当选择哪个值时,获得对应的值.

form表单switch开关:

1 <div class="layui-form"> 
2     <div class="layui-form-item">
3         <label class="layui-form-label">开关</label>
4         <div class="layui-input-block" lay-filter="test">
5             <input type="checkbox" name="switch" lay-skin="switch" lay-filter="test">
6         </div>
7     </div>
8 </div>
1 layui.use('form', function(){
2   var form = layui.form;
3   form.on('switch(test)', function(data){
4       console.log(data.elem); //得到checkbox原始DOM对象
5       console.log(data.elem.checked); //开关是否开启,true或者false
6       console.log(data.value); //开关value值,也可以通过data.elem.value得到
7       console.log(data.othis); //得到美化后的DOM对象
8     })
9 }); 

form表单复选框:

 1 <div class="layui-form">
 2     <div class="layui-form-item">
 3         <label class="layui-form-label">复选框</label>
 4         <div class="layui-input-block">
 5             <input type="checkbox" name="like[write]" title="写作" lay-filter="test">
 6             <input type="checkbox" name="like[read]" title="阅读" lay-filter="test">
 7             <input type="checkbox" name="like[dai]" title="发呆" lay-filter="test">
 8         </div>
 9     </div>
10 </div>
1 layui.use('form', function(){
2   var form = layui.form;
3   form.on('checkbox(test)', function(data){
4       console.log(data.elem); //得到checkbox原始DOM对象
5       console.log(data.elem.checked); //是否被选中,true或者false
6       console.log(data.value); //复选框value值,也可以通过data.elem.value得到
7       console.log(data.othis); //得到美化后的DOM对象
8     }); 
9 }); 

form表单单选radio:

1 <div class="layui-form">
2      <div class="layui-form-item">
3         <label class="layui-form-label">单选框</label>
4         <div class="layui-input-block">
5               <input type="radio" name="sex" value="男" title="男" lay-filter="test">
6               <input type="radio" name="sex" value="女" title="女" checked lay-filter="test">
7             </div>
8       </div>
9 </div>
1 layui.use('form', function(){
2   var form = layui.form;
3   form.on('radio(test)', function(data){
4       console.log(data.elem); //得到radio原始DOM对象
5       console.log(data.value); //被点击的radio的value值
6     }); 
7 }); 

form表单验证:

对表单的验证进行了非常巧妙的支持,大多数时候你只需要在表单元素上加上 lay-verify="" 属性值即可。如:

1 <input type="text" lay-verify="email"> 
2  
3 还同时支持多条规则的验证,如下:
4 <input type="text" lay-verify="required|phone|number">

上述对输入框定义了一个邮箱规则的校验,它会在 form 模块内部完成。目前我们内置的校验支持见上文的:预设元素属性

除了内置的校验规则外,你还可以自定义验证规则,通常对于比较复杂的校验,这是非常有必要的。

语法:

 1 form.verify({
 2   username: function(value, item){ //value:表单的值、item:表单的DOM对象
 3     if(!new RegExp("^[a-zA-Z0-9_\u4e00-\u9fa5\\s·]+$").test(value)){
 4       return '用户名不能有特殊字符';
 5     }
 6     if(/(^\_)|(\__)|(\_+$)/.test(value)){
 7       return '用户名首尾不能出现下划线\'_\'';
 8     }
 9     if(/^\d+\d+\d$/.test(value)){
10       return '用户名不能全为数字';
11     }
12   }
13   
14   //我们既支持上述函数式的方式,也支持下述数组的形式
15   //数组的两个值分别代表:[正则匹配、匹配不符时的提示文字]
16   ,pass: [
17     /^[\S]{6,12}$/
18     ,'密码必须6到12位,且不能出现空格'
19   ] 
20 });  

当你自定义了类似上面的验证规则后,你只需要把key赋值给输入框的 lay-verify 属性即可:

1 <input type="text" lay-verify="username" placeholder="请输入用户名">
2 <input type="password" lay-verify="pass" placeholder="请输入密码">

 补充一点:实际项目中可能为了安全很多用form提交验证,大多是用ajax发送数据,感兴趣的小伙伴可以看下我另一篇关于ajax的封装文章,是小编自己在项目实践中,总结和封装的一些ajax方法,如有疑问欢迎留言。