国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

【已解決】webman-admin一鍵菜單,自動生成的update.html中元素賦值的問題。

chao

問題描述

其中有一個字段是status,使用radio來做,發(fā)現(xiàn)無法賦值(賦值后無法顯示當前選中)
查看layui文檔、詢問chatgpt后:
嘗試手動賦值渲染

document.querySelector('input[name="status"][value="' + res.data[0].status + '"]').checked = true;
form.render('radio');

這樣是渲染當前項了,但是切換選中項不會隨著改變,form提交時也無法正確獲取選中項的值(永遠是那個初始值)。
select元素也試了下,也是有類似的問題。
大概率是由于我不熟悉layui導致的(沒道理一個框架對于這種最基本的東西都這么難用),請問一下對于這種情況應該怎么正確處理?

html代碼

<div class="layui-form-item">
    <label class="layui-form-label">狀態(tài)</label>
    <div class="layui-input-block">
        <input type="radio" name="status" value="1" title="正常" />
        <input type="radio" name="status" value="2" title="禁用" />
        <input type="radio" name="status" value="3" title="連接異常" />
    </div>
</div>

解決方案

由于沒有找到統(tǒng)一的方案,只能針對這個情況手動處理一下

// 前面是ajax獲取數(shù)據(jù),下面代碼是在ajax的success中的處理

// 給表單初始化數(shù)據(jù)
layui.each(res.data[0], function (key, value) {
    let obj = $('*[name="'+key+'"]');
    if (key === "password") {
        obj.attr("placeholder", "不更新密碼請留空");
        return;
    }
    if (typeof obj[0] === "undefined" || !obj[0].nodeName) return;
    if (obj[0].nodeName.toLowerCase() === "textarea") {
        obj.val(value);
    }
    // 針對radio特殊處理
    else if ($(obj[0]).is(':radio')) {
        $('input[type="radio"][name="' + key + '"][value="' + value + '"]').attr('checked', true);
    }
    else {
        obj.attr("value", value);
        obj[0].value = value;
    }
});

form.render();

其實就是針對radio做個特殊處理,然后要注意的就是一定不要忘了 form.render() ,不寫這個是無法正確渲染出radio的選中項的。
然后試了一下select下拉框,只要加上了 form.render() ,無需特殊處理就能正常使用。

712 1 0
1個回答

keytehu

layui賦值后要調(diào)用 form.render(); 執(zhí)行渲染才能生效

  • 暫無評論
??