2021-10-18 LayUI-实现省/市/区三级联动

结果:
在这里插入图片描述
代码(address_options.html):

{include file="system@block/layui"/}
<link rel="stylesheet" href="__PUBLIC_JS__/layui/css/layui.css?v={:config('hisiphp.version')}">


<style>
  .layui-form-item {
    display: flex;
    justify-content: space-between;
  }
  .layui-form-select dl {
    max-height: 152px;
  }
  .layui-btn {
    padding: 0 36px;
    border-radius: 26px;
  }
</style>


<body>

<div>
  <form class="layui-form">
    <div class="layui-form-item">
      <div class="layui-input-inline" style="margin-left: 5px;width: 240px;margin-top: 15px;">
        <select id="province" lay-filter="province" lay-verify="required" lay-search="" name="province">
          <option value="">请选择省</option>
          {volist name="$data.province" id="v"}
          <option value="{$v.id}" {$data['info']['province'] == $v.id ? 'selected' :''}>{$v.area_name}</option>
          {/volist}
        </select>
      </div>
      <div class="layui-input-inline" style="margin-left: 5px;width: 240px;margin-top: 15px;">
        <select id="city" lay-filter="city" lay-verify="required" lay-search="" name="city">
          {if $data.city == []}
          <option value=""></option>
          {else/}
          <option value="">请选择市</option>
          {volist name="$data.city" id="v"}
          <option value="{$v.id}" {$data['info']['city'] == $v.id ? 'selected' :''}>{$v.area_name}</option>
          {/volist}
          {/if}
        </select>
      </div>
      <div class="layui-input-inline" style="margin-left: 5px;width: 240px;margin-top: 15px;">
        <select id="area" lay-filter="area" lay-verify="required" lay-search="" name="area">
          {if $data.area == []}
          <option value=""></option>
          {else/}
          <option value="">请选择县/</option>
          {volist name="$data.area" id="v"}
          <option value="{$v.id}" {$data['info']['area'] == $v.id ? 'selected' :''}>{$v.area_name}</option>
          {/volist}
          {/if}
        </select>
      </div>
    </div>
    <!-- 传校区id -->
    <input type="hidden" name="id" value="{$data['info']['id']}">
    <div class="layui-form-item" style="margin-top: 110px;display: flex;align-items: center;justify-content: center;">
      <button class="layui-btn" lay-submit="" lay-filter="*">确定</button>
    </div>

  </form>
</div>

</body>


<script>
  layui.use(['form','layer','jquery'],function(){
    var form = layui.form,
        layer = parent.layer === undefined ? layui.layer : parent.layer,
        $ = layui.jquery;
    var provinceId = ""; // 省id
    var cityId     = ""; // 市id
    var areaId     = ""; // 县/区id

    //监听省下拉框
    form.on('select(province)', function(dataObj){
      //移除城市下拉框所有选项
      $("#city").empty();
      var cityHtml = '<option value="">请选择市</option>';
      $("#city").html(cityHtml);
      var areaHtml = '<option value="">请选择县/区</option>';
      $("#area").html(areaHtml);
      // 省id
      provinceId = $('select[name=province]').val();
      console.log(provinceId);
      //异步加载下拉框数据
      $.post("addressDetail",{"id":provinceId},function (res) {
        // var res = JSON.parse(res);
        console.log(res);
        if(res.sta == 2000){
          var $html = "";
          if(res.data != null) {
            $.each(res.data, function (index, item) {
              $html += "<option value='" + item.id + "'>" + item.area_name + "</option>";
            });
            $("#city").append($html);
            // append后必须从新渲染
            form.render('select');
          }
        }else{
          layer.msg(res.msg)
        }
      },'json');

    });

    // 监听市下拉框
    form.on('select(city)', function(dataObj){
      // 移除县区下拉框所有选项
      $("#area").empty();
      var html = '<option value="">请选择县/区</option>';
      $("#area").html(html);
      // 市id
      cityId = $('select[name=city]').val();
      console.log(cityId);
      // 异步加载下拉框数据
      $.post("addressDetail",{"id":cityId},function (res) {
        console.log(res);
        if(res.sta == 2000){
          var $html = "";
          if(res.data != null) {
            $.each(res.data, function (index, item) {
              $html += "<option value='" + item.id + "'>" + item.area_name + "</option>";
            });
            $("#area").append($html);
            //append后必须从新渲染
            form.render('select');
          }
        }else{
          layer.msg(res.msg)
        }
      },'json');

    });

    // 监听县区下拉框
    form.on('select(area)', function(dataObj){
      // 县/区id
      areaId = $('select[name=area]').val();
      console.log(areaId)
    });

    // 提交表单
    form.on('submit(*)', function(data){
      console.log(data);
        $.ajax({
          url: "{:url('addressData')}",
          type: 'post',
          data:data.field,
          success:function (res) {
            var res = JSON.parse(res);
            if(res.sta == 2000) {
              layer.msg(res.msg,{icon:1},function () {
                // 关闭layer弹窗
                var index1 = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
                parent.layer.close(index1); //再执行关闭
              })
            } else {
              layer.msg(res.msg,{icon:2})
            }
          }
        })
      return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
    });

  });

</script>

其它页面(index.html)中点击编辑弹出layer,不过是跳转页面的弹窗
在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
实现layui三级联动,你可以按照以下步骤进行操作: 1. 在HTML中创建三个下拉框元素,分别对应的选择。 2. 引入layui的相关样式和脚本。 3. 使用layui的form模块初始化表单,并监听下拉框的变化事件。 4. 当下拉框的值改变时,触发change事件,在事件处理程序中发送异步请求获取对应的数据,并动态更新下拉框的选项。 5. 当下拉框的值改变时,同样触发change事件,在事件处理程序中发送异步请求获取对应的数据,并动态更新下拉框的选项。 以下是一个示例代码: ```html <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.css"> </head> <body> <div class="layui-form"> <div class="layui-form-item"> <div class="layui-input-inline"> <select name="province" id="province"> <option value="">请选择份</option> <!--份选项--> </select> </div> <div class="layui-input-inline"> <select name="city" id="city"> <option value="">请选择城</option> <!--选项--> </select> </div> <div class="layui-input-inline"> <select name="area" id="area"> <option value="">请选择地</option> <!--选项--> </select> </div> </div> </div> <script src="https://cdn.staticfile.org/layui/2.5.6/layui.js"></script> <script> layui.use(['form'], function() { var form = layui.form; // 下拉框值改变事件 form.on('select(province)', function(data) { var provinceId = data.value; // 发送异步请求获取对应的数据 // 根据份ID获取对应的数据并动态更新下拉框选项 // 清空下拉框选项 $("#area").html('<option value="">请选择地</option>'); form.render('select'); }); // 下拉框值改变事件 form.on('select(city)', function(data) { var cityId = data.value; // 发送异步请求获取对应的数据 // 根据城ID获取对应的数据并动态更新下拉框选项 form.render('select'); }); // 初始化的下拉框选项 // 可以通过异步请求获取数据并动态添加选项 }); </script> </body> </html> ``` 这是一个简单的示例代码,你需要根据你的实际需求进行修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小呀小萝卜儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值