LayUI switch开关监听事件操作

文章描述:

layui是一款很好用的前端组件,那么switch开关怎么获取事件、获取属性值和更改状态呢?

需求场景

在数据列表和编辑内容区域需要加一个状态的开关按钮,想使用一下 LayUI 的 switch 控件,在需要更改状态的时候进行 ajax请求传输

html

设置的两个属性值 lay-filter,switch_data_id,switch_data_id里面存的值是数据的id,设置switch一个默认开启状态

<div class="layui-form">
   <input type="checkbox" class="switch_checked" lay-filter="switchDataID" switch_data_id="1" lay-skin="switch" checked lay-text="开启|关闭">
   <input type="checkbox" class="switch_checked" lay-filter="switchDataID" switch_data_id="2" lay-skin="switch" lay-text="开启|关闭">
</div>

注意:在switch使用的外面一定要有一个class为layui-form的标签

js

当点击switch开关后需要获取当前需要更改状态的数据ID,然后通过ajax回调数据

layui.use(['form'], function () {
       var form = layui.form;
       form.on('switch(switchDataID)',function (data) {
           //开关是否开启,true或者false
           var checked = data.elem.checked;
            
       layer.msg('开关checked:'+ (this.checked ? 'true' : 'false'), {
       offset: '6px'
       });
       layer.tips('温馨提示:click', data.othis)
            
           //获取所需属性值
           var switch_data_id = data.elem.attributes['switch_data_id'].nodeValue;
           console.log(checked);
           console.log(switch_data_id);
           //TODO 此时进行ajax的服务器访问,如果返回数据正常,则进行后面代码的调用   
           var serverStatus = 1;
           if(serverStatus){
               data.elem.checked = checked;
           }else {
               data.elem.checked = !checked;
           }
           form.render();
       });
   });

注意:当进行表格数据分页显示等需求时,注意完成代码替换后,进行再次渲染:

form.render(); //更新全部 也可以使用:layui.form.render()
form.render('select'); //刷新select选择框渲染

ajax

使用ajax把数据ID传递到指定页面进行操作

$.ajax({
    type:'post',
    url:"",
    data:{id:id},
    dataType:"json",
    async: false,
    success:function(data){
 
    },error:function(e){
        console.log(e.responseText);
    }
});

 

发布时间:2021/08/12

发表评论