Layui下拉框的绑定

开发工具与关键技术:mvc、layui、js、html 作者:张俊辉 撰写时间:2019年04月8日

  • 对于Layui表单中的表单下拉框绑定中,我们会发现绑定上去了却没显示出来,那是因为你绑定的下拉框与layui插件表单渲染后的下拉框并不是同一个元素、同一个标签组成,因此绑定不了,该如何绑定下拉框其实只需要使用Layui里一个自带的方法——更新渲染form.render(); //更新全部form.render(‘select’); //刷新select选择框渲染 ,但我建议使用更新全部的方法,因为在使用更新select选择框渲染时因延迟问题当,用户进入页面就开始点击下拉框时,会绑定不了!插件需使用jQuery与Layui,代码如下:
    HTML代码:
<form class="layui-form" lay-filter="InsertPurchasingManagement">
	<div class="layui-form-item">
		<div class="layui-inline">
           <label class="layui-form-label">付款方式</label>
           <div class="layui-input-inline">
              <select lay-verify="required" name="PaymentModeID" class="SelectPaymentMode">
                 <option value="">请选择</option>
              </select>
          </div>
      </div>
	</div>
</form>

JS代码:

$(function () {
//付款方式(下拉框)
    $.post("/Purchase/SupplierMessage/SelectPaymentMode", function (data) {
          for (var k in data) 
          {
          $(".SelectPaymentMode").append("<option value='" + data[k].id + "'>" + data[k].text + "</option>");
          }
          layui.use('form', function () {
               var form = layui.form;
               form.render();
           });
       });
}

对于封装的下拉框绑定方法则只需要在执行完绑定方法后执行下列代码即可:

layui.use('form', function () {
      var form = layui.form;
      form.render();
});

效果图如下:在这里插入图片描述
对于一些初始值绑定的下拉框,只需要在赋值之后再执行更新全部的方法。代码如下:

//数据回填
layui.use('form', function () {
      var form = layui.form;
      form.val("ExaminePurchasingManagement", data);
      if (data.Tax == false) {
         $("#ExaminePN select[name='Tax']").val("false")
      }
      if (data.Tax == true) {
         $("#ExaminePN select[name='Tax']").val("true")
      }
      form.render();
});

效果图如下:在这里插入图片描述

### layui 下拉框搜索功能实现方法 在 Layui 框架中,可以通过 `lay-search` 属性来启用下拉框的搜索功能。以下是具体的实现方式: #### HTML 结构 通过设置 `<select>` 标签并添加属性 `lay-search` 来开启搜索功能。此属性允许用户输入关键字筛选选项列表。 ```html <div class="layui-form-item"> <label class="layui-form-label">搜索下拉</label> <div class="layui-input-block"> <select id="searchInput" lay-filter="searchInput" lay-verify="required" class="layui-select" lay-search> <option value="">请选择</option> <!-- 动态加载的选项 --> </select> </div> </div> ``` 上述代码中的 `lay-search` 是关键属性[^1],它使得下拉框具备实时过滤的功能。 --- #### JavaScript 配置 为了使下拉框正常工作,需初始化表单组件并通过事件监听动态更新选项内容。 ```javascript layui.use(['form', 'jquery'], function() { var form = layui.form; var $ = layui.jquery; // 初始化数据(可以替换为 AJAX 请求获取) var optionsData = [ {value: '1', text: '选项一'}, {value: '2', text: '选项二'}, {value: '3', text: '选项三'} ]; // 渲染下拉框选项 var selectHtml = '<option value="">请选择</option>'; optionsData.forEach(function(item) { selectHtml += `<option value="${item.value}">${item.text}</option>`; }); $('#searchInput').html(selectHtml); form.render('select'); // 刷新渲染 // 监听下拉框变化事件 form.on('select(searchInput)', function(data) { console.log(data.value); // 获取选中的值 }); }); ``` 以上代码展示了如何通过静态数组填充下拉框,并绑定选择事件[^1]。如果需要从服务器端动态加载数据,则可结合 AJAX 完成。 --- #### 处理动态数据加载 当需要从后台接口获取数据时,可通过 AJAX 加载并将返回的结果注入到下拉框中。 ```javascript $.ajax({ type: "POST", url: "/api/getOptions", // 替换为实际接口地址 dataType: "json", success: function(res) { if (res.code === 0) { // 假设成功状态码为 0 var data = res.data || []; var htmlStr = '<option value="">请选择</option>'; data.forEach(function(option) { htmlStr += `<option value="${option.value}">${option.label}</option>`; }); $('#searchInput').html(htmlStr); form.render('select'); // 更新渲染 } }, error: function(xhr, status, err) { console.error(err); } }); ``` 这段代码实现了从服务端请求数据并将其插入到下拉框的过程[^3]。 --- #### 解决常见问题 1. **下拉框无法显示** 如果发现下拉框未正确展示,请确认是否已引入必要的 CSS 和 JS 文件,并确保页面结构无误[^2]。 2. **搜索功能失效** 确认 `<select>` 标签中包含 `lay-search` 属性,以及是否调用了 `form.render()` 方法刷新组件[^1]。 --- ### 总结 通过配置 `lay-search` 属性和合理使用 Layui 的表单模块,能够轻松实现带搜索功能的下拉框。同时,借助 AJAX 可以灵活处理动态数据场景。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值