解决使用layui对select append元素无效或者未及时更新的问题


Posted in Javascript onSeptember 18, 2019

一、问题

本人在使用layui使用了select按钮,点击是js脚本会异步请求后台接口获取json数据,然后layui将json数据渲染到select上,然而获取接口数据没有问题,就是无法更新。

本人使用代码如下:

<div class="main layui-clear">
  <div class="fly-panel" pad20>
    <h2 class="page-title">发布帖子</h2>
 
    <div class="layui-form layui-form-pane">
      <form method="post">
        <div class="layui-form-item">
          <label for="L_title" class="layui-form-label">标题</label>
          <div class="layui-input-block">
            <input type="text" id="L_title" name="title" required lay-verify="required" autocomplete="off"
                class="layui-input">
          </div>
        </div>
        <div class="layui-form-item layui-form-text">
          <div class="layui-input-block">
            <textarea id="L_content" name="content" placeholder="请输入内容" class="layui-textarea fly-editor"
                 style="height: 260px;"></textarea>
          </div>
          <label for="L_content" class="layui-form-label" style="top: -2px;">描述</label>
        </div>
        <div class="layui-form-item">
          <div class="layui-inline">
            <label class="layui-form-label">标签选择框</label>
            <div class="layui-input-block">
              <div class="layui-input-inline" onclick="">
                <script id="labels" type="text/html">
                  {{# layui.each(d.data, function(index,item){ }}
                    <option value="{{item.id}}">{{item.name}}</option>
                  {{# }); }}
                </script>
                <select name="modules" lay-search="" id="label_select" name="labelId">
                </select>
              </div>
            </div>
          </div>
        </div>
        <div class="layui-form-item">
          <button class="layui-btn" lay-filter="*" lay-submit>立即发布</button>
        </div>
      </form>
    </div>
  </div>
</div>

js 脚本如下(该代码是修改后的,添加了修改后的关键代码,下面有提示):

<script>
  layui.use(['form', 'laytpl', 'layedit'], function () {
    var form = layui.form,
      layedit = layui.layedit,
      layer = layui.layer,
      laytpl = layui.laytpl;
    //添加option
    $.get(quark_label_getall_api, function (data) {
      data = $.parseJSON(data);
      if (data.status == 200) {
        var tpl = $("#labels").html();
        laytpl(tpl).render(data, function (html) {
          $("#label_select").append(html);
          var form = layui.form
          form.render();
        });
      } else {
        layer.msg(data.error, {icon: 5});
      }
    });
    layedit.set({
      uploadImage: {
        url: quark_upload_api,
        type: 'post' //默认post
      }
    });
    var content = layedit.build('L_content'); //建立编辑器
    form.on('submit(*)', function (data) {
      var layeditval = layedit.getContent(content);
      if (layeditval == "" || layeditval == undefined || layeditval == null) {
        layer.msg("输入的内容不能为空", {icon: 7});
        return false;
      }
      $.post(quark_posts_add_api, {
          title: data.field.title,
          content: layedit.getContent(content),
          labelId: data.field.labelId,
          token: getCookie()
        },
        function (data) {
          //data=$.parseJSON(data);
          if (data.status == 200) {
            layer.msg("发布成功", {
              icon: 1,
              time: 1000 //1秒关闭
            }, function () {
              location.href = "/pages/index";
            });
          } else if (data.status == 400) {
            layer.msg(data.error, {icon: 7});
          } else {
            layer.msg(data.error, {icon: 5});
          }
        }, "json");
      return false;
    });
  });
  //封装查询参数
  function getData(data) {
    var param = {};
    param.title = data.title;
    param.labelId = data.labelId;
    param.token = getCookie();
    return param;
  }
</script>

二、解决办法:

Layui会对select、checkbox、radio等原始元素隐藏,从而进行美化修饰处理。但这需要依赖于form组件,所以必须加载 form,并且执行一个实例。导航的Hover效果、Tab选项卡等同理(它们需依赖 element 模块)

所以当新添加这些元素时需要对页面表单元素重新渲染一下,需要模仿下面添加关键代码

layui.use('form', function(){
 var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
 
 //……
 
 //但是,如果你的HTML是动态生成的,自动渲染就会失效
 //因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init();
 form.render();
});

最后js异步获取的数据可以在select上及时显示了

效果图:

解决使用layui对select append元素无效或者未及时更新的问题

以上这篇解决使用layui对select append元素无效或者未及时更新的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
prototype 学习笔记整理
Jul 17 Javascript
获取HTML DOM节点元素的方法的总结
Aug 21 Javascript
cloudgamer出品ImageZoom 图片放大效果
Apr 01 Javascript
jQuery EasyUI API 中文文档 - Pagination分页
Sep 29 Javascript
js 控制下拉菜单刷新的方法
Mar 03 Javascript
jquery实现搜索框常见效果的方法
Jan 22 Javascript
jquery分页插件jquery.pagination.js实现无刷新分页
Apr 01 Javascript
JS实现弹出居中的模式窗口示例
Jun 20 Javascript
jquery实现页面加载效果
Feb 21 Javascript
基于js实现抽红包并分配代码实例
Sep 19 Javascript
vue实现图片按比例缩放问题操作
Aug 11 Javascript
详解JavaScript的计时器和按钮效果设置
Feb 18 Javascript
Flutter实现仿微信底部菜单栏功能
Sep 18 #Javascript
详解element-ui中表单验证的三种方式
Sep 18 #Javascript
layui的布局和表格的渲染以及动态生成表格的方法
Sep 18 #Javascript
vue中使用element组件时事件想要传递其他参数的问题
Sep 18 #Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
Sep 18 #Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
Sep 18 #Javascript
解决layer 动态加载select 失效的问题
Sep 18 #Javascript
You might like
彻底杜绝PHP的session cookie错误
2009/08/09 PHP
hadoop常见错误以及处理方法详解
2013/06/19 PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
2014/11/20 PHP
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
详解PHP中的Traits
2015/07/29 PHP
php根据用户语言跳转相应网页
2015/11/04 PHP
php上传图片并压缩的实现方法
2015/12/22 PHP
php图像处理函数imagecopyresampled用法详解
2016/12/02 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
2015/04/16 Javascript
javascript实现随机读取数组的方法
2015/08/03 Javascript
jquery图片滚动放大代码分享(2)
2015/08/28 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
从parcel.js打包出错到选择nvm的全部过程
2018/01/23 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
2018/02/18 jQuery
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
express框架中使用jwt实现验证的方法
2019/08/25 Javascript
mui js控制开关状态、修改switch开关的值方法
2019/09/03 Javascript
[02:57]DOTA2亚洲邀请赛小组赛第四日 赛事回顾
2015/02/02 DOTA
Python+Django在windows下的开发环境配置图解
2009/11/11 Python
Python面向对象之继承代码详解
2018/01/29 Python
python set内置函数的具体使用
2019/07/02 Python
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
Python实现代码统计工具
2019/09/19 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
keras得到每层的系数方式
2020/06/15 Python
超市后勤自我鉴定
2014/01/17 职场文书
祖国在我心中的演讲稿
2014/05/04 职场文书
警察先进个人事迹材料
2014/05/16 职场文书
土地转让协议书
2014/09/27 职场文书
2016五一手机促销广告语
2016/01/28 职场文书
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
2021/04/22 HTML / CSS