解決使用layui對select append元素?zé)o效或者未及時(shí)更新的問題
一、問題
本人在使用layui使用了select按鈕,點(diǎn)擊是js腳本會(huì)異步請求后臺(tái)接口獲取json數(shù)據(jù),然后layui將json數(shù)據(jù)渲染到select上,然而獲取接口數(shù)據(jù)沒有問題,就是無法更新。
本人使用代碼如下:
<div class="main layui-clear">
<div class="fly-panel" pad20>
<h2 class="page-title">發(fā)布帖子</h2>
<div class="layui-form layui-form-pane">
<form method="post">
<div class="layui-form-item">
<label for="L_title" class="layui-form-label">標(biāo)題</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="請輸入內(nèi)容" 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">標(biāo)簽選擇框</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>立即發(fā)布</button>
</div>
</form>
</div>
</div>
</div>
js 腳本如下(該代碼是修改后的,添加了修改后的關(guān)鍵代碼,下面有提示):
<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' //默認(rèn)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("輸入的內(nèi)容不能為空", {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("發(fā)布成功", {
icon: 1,
time: 1000 //1秒關(guān)閉
}, 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;
});
});
//封裝查詢參數(shù)
function getData(data) {
var param = {};
param.title = data.title;
param.labelId = data.labelId;
param.token = getCookie();
return param;
}
</script>
二、解決辦法:
Layui會(huì)對select、checkbox、radio等原始元素隱藏,從而進(jìn)行美化修飾處理。但這需要依賴于form組件,所以必須加載 form,并且執(zhí)行一個(gè)實(shí)例。導(dǎo)航的Hover效果、Tab選項(xiàng)卡等同理(它們需依賴 element 模塊)
所以當(dāng)新添加這些元素時(shí)需要對頁面表單元素重新渲染一下,需要模仿下面添加關(guān)鍵代碼
layui.use('form', function(){
var form = layui.form; //只有執(zhí)行了這一步,部分表單元素才會(huì)自動(dòng)修飾成功
//……
//但是,如果你的HTML是動(dòng)態(tài)生成的,自動(dòng)渲染就會(huì)失效
//因此你需要在相應(yīng)的地方,執(zhí)行下述方法來手動(dòng)渲染,跟這類似的還有 element.init();
form.render();
});
最后js異步獲取的數(shù)據(jù)可以在select上及時(shí)顯示了
效果圖:

以上這篇解決使用layui對select append元素?zé)o效或者未及時(shí)更新的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
JS 在數(shù)組指定位置插入/刪除數(shù)據(jù)的方法
下面小編就為大家?guī)硪黄狫S 在數(shù)組指定位置插入/刪除數(shù)據(jù)的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01
js實(shí)現(xiàn)簡單的省市縣三級(jí)聯(lián)動(dòng)效果實(shí)例
這篇文章主要介紹了js實(shí)現(xiàn)簡單的省市縣三級(jí)聯(lián)動(dòng)效果,以完整實(shí)例形式分析了JavaScript實(shí)現(xiàn)省市縣三級(jí)聯(lián)動(dòng)效果的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-02-02
javascript中的try catch異常捕獲機(jī)制用法分析
這篇文章主要介紹了javascript中的try catch異常捕獲機(jī)制,簡單分析了try catch異常捕獲機(jī)制的基本定義與使用方法,需要的朋友可以參考下2016-12-12
JavaScript DOM節(jié)點(diǎn)操作方法總結(jié)
下面小編就為大家?guī)硪黄狫avaScript DOM節(jié)點(diǎn)操作方法總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08
寫入cookie的JavaScript代碼庫 cookieLibrary.js
cookieLibrary.js 寫入cookie的JavaScript代碼庫,需要的朋友可以參考下。2009-10-10
js函數(shù)定時(shí)器實(shí)現(xiàn)定時(shí)讀取系統(tǒng)實(shí)時(shí)連接數(shù)
這篇文章主要介紹了使用js函數(shù)定時(shí)器實(shí)現(xiàn)定時(shí)讀取系統(tǒng)實(shí)時(shí)連接數(shù),需要的朋友可以參考下2014-04-04
使用Javascript在HTML中顯示實(shí)時(shí)時(shí)間
這篇文章主要為大家詳細(xì)介紹了使用Javascript在HTML中顯示實(shí)時(shí)時(shí)間,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06

