解決使用layui對(duì)select append元素?zé)o效或者未及時(shí)更新的問題
一、問題
本人在使用layui使用了select按鈕,點(diǎn)擊是js腳本會(huì)異步請(qǐng)求后臺(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="請(qǐng)輸入內(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ì)對(duì)select、checkbox、radio等原始元素隱藏,從而進(jìn)行美化修飾處理。但這需要依賴于form組件,所以必須加載 form,并且執(zhí)行一個(gè)實(shí)例。導(dǎo)航的Hover效果、Tab選項(xiàng)卡等同理(它們需依賴 element 模塊)
所以當(dāng)新添加這些元素時(shí)需要對(duì)頁面表單元素重新渲染一下,需要模仿下面添加關(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對(duì)select append元素?zé)o效或者未及時(shí)更新的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
javascript中的startWith和endWith的幾種實(shí)現(xiàn)方法
javascript中的startWith和endWith的幾種實(shí)現(xiàn)方法,需要的朋友可以參考一下2013-05-05
fckeditor部署到weblogic出現(xiàn)xml無法讀取及樣式不能顯示問題的解決方法
這篇文章主要介紹了fckeditor部署到weblogic出現(xiàn)xml無法讀取及樣式不能顯示問題的解決方法,分析了問題出現(xiàn)的原因及相關(guān)配置文件設(shè)置技巧,需要的朋友可以參考下2017-03-03
js之input[type=file]選擇重復(fù)的文件,無法觸發(fā)change事件問題
這篇文章主要介紹了js之input[type=file]選擇重復(fù)的文件,無法觸發(fā)change事件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
一個(gè)無限級(jí)XML綁定跨框架菜單(For IE)
一個(gè)無限級(jí)XML綁定跨框架菜單(For IE)...2007-01-01
JavaScript在網(wǎng)頁中畫圓的函數(shù)arc使用方法
這篇文章主要介紹了JavaScript在網(wǎng)頁中畫圓的函數(shù)arc使用方法的相關(guān)資料,需要的朋友可以參考下2015-11-11
JavaScript中從setTimeout與setInterval到AJAX異步
這篇文章主要介紹了JavaScript中從setTimeout與setInterval到AJAX異步,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02
confirm確認(rèn)對(duì)話框的實(shí)現(xiàn)方法總結(jié)
下面小編就為大家?guī)硪黄猚onfirm確認(rèn)對(duì)話框的實(shí)現(xiàn)方法總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06

