解決layui前端動態設置radio、checkbox默認選項的解決方案

2020-12-12 楊永鴻

前幾天接觸一個二次開發,後臺UI用的是layui框架,程序原來的TAG標籤設置中自由輸入的,想修改為單選。這樣子的功能用於,一個產品屬於兩種分類的作法。第一種就是系統自帶的產品分類,第二種使用標籤來實現。然爾一個產品並不需要同時屬於兩個以上的標籤,所以二次開發修改為單選radio,而不是多選checkbox。

不過本文作出的動態設置選中狀態單選與多選的作法是一致的。

在前端模板文件中,普通用到的是使用<if condition=""></if>來作判斷。但是奇怪的就是layui並不能識別。

第一次嘗試:

<input class='layui-input' type='radio' name='tag' title='正常' value='正常' <if condition="">checked</if>>

發現在input包括中無法解析到if判斷語句;當然在普通情況下是可以的,中不過程序使用了layui,因為layui通過js識別所有表單元素,重新編譯了。所以在js的重新編譯中無法識別原本不屬於表無素材的標籤。

第二次嘗試:

<if condition="">

<input class='layui-input' type='radio' name='tag' title='正常' value='正常' checked>

<else/>

<input class='layui-input' type='radio' name='tag' title='正常' value='正常'>

</if>

以上代碼確定可以選中狀態,但隨之又有其它問題隨之而來,選中的與未選中的兩個均會顯示出來,為什麼呢?

原因還是在於layui遍歷form裡的表單元素,並不會因if語句的存在而作出最終結果。而是識別到有兩個input。

第三次嘗試,不用radio,不就是單選嗎?下拉單項也是可以的,使用<select>又測試了一番。同樣會出現以上兩個問題。

無辦法下只能求助於神奇的百度給出了這樣的結果;

$("input[name=tag][value=正常]").prop("checked","true");

form.render();

prop() 方法設置或返回被選元素的屬性和值。

當該方法用於返回屬性值時,則返回第一個匹配元素的值。

當該方法用於設置屬性值時,則為匹配元素集合設置一個或多個屬性/值對。

render()就是重新渲染對象;

看到這裡很多朋友以為問題已經得到解決了,其實問題才剛剛開始。不是提示form對象找不到,就是提示form中找不到render()方法。為什麼呢,整套程序不是doem,它還整合了很多其它的框架和插件,調作起來並不像官方給出的這麼直接。

form.render();

$form.render();

form().render();

.layui.form().render();

……

通通試了一篇,還是不行,這東西就有這麼折騰。累了中途休息一下。

一覺睡醒,闊然開朗。先來看看完成後的代碼。

thistag="{$info.tag}";//讀後臺數據值

var mytag=new Array("無","第一項","第二項","第三項","第四項","第五項");//所有單選項目

cntag="";

for(j = 0,len=mytag.length; j < len; j++) { //遍歷數組

if(thistag==mytag[j]){ //判斷是否選中

cntag+="<input class=\'layui-input\' type=\'radio\' name=\'tag\' id=\'tag\' title=\'"+newtit+"\' value=\'"+mytag[j]+"\' checked>";

}else{

cntag+="<input class=\'layui-input\' type=\'radio\' name=\'tag\' id=\'tag\' title=\'"+newtit+"\' value=\'"+mytag[j]+"\' >";

}

}

$("#cntag").html(cntag); //列印到網頁中顯示最終效果

優點:只讀一次後面數據;

簡化:就算單選項很多,只需寫在一個數組中即可。

簡單:只需寫一次判斷語句;

原理既然是前端使用,多用js,少用<if><php>這些php後端定義的標籤。

相關焦點

  • layui的彈出框、form表單、表格使用常見問題解決方案
    layui,是一款採用自身模塊規範編寫的前端 UI 框架,遵循原生 HTML/CSS/JS 的書寫與組織形式,門檻極低,拿來即用。其外在極簡,卻又不失飽滿的內在,體積輕盈,組件豐盈,從核心代碼到 API 的每一處細節都經過精心雕琢,非常適合界面的快速開發。
  • uniapp picker提交值為數字的解決方案
    form表單接收<switch> <input> <checkbox> <slider> <radio> <picker>提交的值,數據接收格式為{'name': 'value'},但是在接收picker的時候遇到了大坑
  • LayIM v2.x 正式開源,Web 即時通訊前端解決方案
    LayIM是網頁即時通訊(WebIM)前端解決方案,致力於通過靈活、豐富的前端交互,及高度開放的接口,讓其自由接入到你的Web系統,從而打造一套屬於自己的網頁即時聊天系統。LayIM基於layui模塊體系,同樣是開箱即用。
  • JFinal-layui v1.5 精益求精,新增主從表代碼器、優化前端模板
    JFinal-layui 極速開發企業應用管理系統,是以 JFinal+layui 為核心的企業應用項目架構,利用
  • 前端框架bootstrap和layui有什麼區別
    做前端的小夥伴肯定都用過或聽過Bootstrap和LayUi,小編我雖然不是專業的前端程式設計師,但是對於前端還是頗有研究,閒暇事情會經常研究各種前端框架的源碼,一來可以借鑑優秀框架的思想,二來可以順便學習可以提高自己,好了,不廢話了。
  • 推薦一個滴滴開源的跨端整體解決方案!
    Chameleon/kmiln/,簡寫CML,中文名卡梅龍;中文意思變色龍,意味著就像變色龍一樣能適應不同環境的跨端整體解決方案。迫切需要維護一套代碼可以構建多入口的解決方案,滴滴跨端解決方案 Chameleon 終於發布。真正專注於讓一套代碼運行多端。
  • 前端 mock 完美解決方案實戰
    Mock功能介紹市面上講前端mock怎麼做的文章很多,整體上閱讀下來的沒有一個真正站在前端角度上讓我覺得強大和易用的。如何解決前端依賴的配置解耦的思路是配置文件conf.json是在dev或build的時候動態生成的,然後該文件在前端項目引用:├── config│ ├── conf.json # git 不跟蹤│ ├── config.js
  • JFinal-layui-pro v2.0 專業版發布,優化系統界面
    JFinal-layui-pro專業版   pro專業版和master開原版本的區別主要是前端界面的不同,在原有的基礎上修改css,調整首頁布局
  • 服務端表格組件 GcExcel V4.0 發布,構建類 Excel 全棧解決方案...
    將其與純前端表格控制項 SpreadJS 結合使用,可滿足表格數據的在線編輯與展示、前後端數據同步、服務端批量導出與列印,以及高性能類 Excel 報表模板設計與服務端處理等功能,為您的應用程式打造一整套類 Excel 全棧解決方案。
  • 前端mock完美解決方案實戰
    它有這些功能:Mock功能介紹市面上講前端mock怎麼做的文章很多,整體上閱讀下來的沒有一個真正站在前端角度上讓我覺得強大和易用的。如何解決前端依賴的配置解耦的思路是配置文件conf.json是在dev或build的時候動態生成的,然後該文件在前端項目引用:├── config│   ├── conf.json
  • 你需要了解的幾種微前端解決方案
    ,以及其帶來的利弊之處,因為那些弊端,使得我們團隊自己探究了一套目前認為最好的微前端解決方案。通過本文,可以快速幫您理清楚微前端方案的利弊,從而做出有利於您團隊的更好更明智的選擇。中文釋義:可以由多個團隊獨立開發的現代web應用程式的技術、策略和方案。本文則是在此基礎上對現有的微前端解決方案進行對比總結,廢話少說,讓我們開始今天的課題。
  • layui的安裝以及簡單操作
    最近有需要做前端界面的快速開發,於是就考慮到前端框架的使用。Layui是一款採用自身模塊規範編寫的前端 UI 框架,遵循原生 HTML/CSS/JS 的書寫與組織形式,門檻極低,拿來即用。layui 首個版本發布於2016年金秋,她區別於那些基於 MVVM 底層的 UI 框架,卻並非逆道而行,而是信奉返璞歸真之道。準確地說,她更多是為服務端程式設計師量身定做,你無需涉足各種前端工具的複雜配置,只需面對瀏覽器本身,讓一切你所需要的元素與交互,從這裡信手拈來。
  • layui到底香不香?今天拿它的form模塊小試牛刀
    那麼和layui類似的還有easyUI,bootStrap等,他們的共同點是實現了一套完善的ui組件,如表格,表單等,並且提供了豐富而完善的可選選項,這些選項讓程式設計師們從一行一行的CSS和JS以及HTML中解脫出來,很快就可以實現一些常見的web頁面開發。
  • vue教程:封裝了一個checkbox組件
    工作中發現默認vue綁定checkbox很不方便,存在下面幾個問題。1、如果傳遞的數值不是數值,那默認綁定值就會轉為true或false但是作為後端人員,true或flase這類值一般都是用數值型欄位來保存,比如1和0,我們後臺傳遞出來的數據往往就直接是0或1.
  • Win10已重置應用默認設置解決方法
    在新版本解決這個問題之前,這裡告訴你一個解決方法。首先詳細闡述一下問題,微軟最近推出了一個win10補丁KB3135173。更新這個補丁之後,部分電腦會在右下角出現已重置應用默認設置的提示。而且很多應用都無法更改,比如視頻軟體,播放過程會自動改回用電影和電視這個應用來播放。接下來高速你解決方法。首先點擊win10的開始菜單,在所有程序裡找到PowerShell。
  • 5個常見的Microsoft Outlook問題及其解決方案
    確保您的Outlook電子郵件設置正確。僅當這些簡單的解決方案不起作用時,才可以繼續以下方法之一。解決方案A:使用Microsoft Outlook收件箱修復工具從Windows 10的開始菜單轉到控制面板,然後將圖標的外觀更改為「小」。您將能夠看到File Explorer Options選項卡。單擊它打開一個新窗口。
  • Win7電腦玩遊戲延遲高網速慢的解決方案
    大家都喜歡在win7系統中玩一些遊戲,而在遊戲的時候遇到問題也是在所難免,經常有win7系統用戶遇到的就是玩遊戲的時候出現延遲高,網速慢的情況,要如何處理這樣的問題呢,接下來以win7純淨版32位系統為例,跟大家介紹一下玩遊戲延遲高網速慢的解決方法如下。1、設置QoS策略用來解決網絡延遲和阻塞等問題的一種技術。對關鍵應用和多媒體應用十分必要。
  • 詳細說明網站出現500錯誤的解決方案
    1、打開IE瀏覽器,找到工具選項(不同版本的IE瀏覽器工具有不同的位置,以IE8.0為例),找到Internet選項(最後一個選項卡),然後單擊進入Internet選項卡界面。2、然後找到「高級」選項卡,在設置界面中找到滾動條,下拉直到看到「顯示良好的HTTP錯誤消息」,勾選此選項,然後單擊「確定」(具體位置可參考下圖中的紅線)。然後刷新錯誤頁,將顯示有關HTTP錯誤代碼的一些詳細信息。3、解決方案知道原因,我們可以開正確的方法來解決500個錯誤的問題。
  • 微信小程序 | checkbox 組件,form 組件,input 組件
    不得不吐糟下 checkbox 默認樣式真是有點略醜!!!
  • 解決BIOS設置找不到USB-HDD選項的方法
    當你進入電腦的BIOS設置u盤啟動為第一啟動項的時候,發現BIOS設置裡面並沒有出現USB-HDD選項,下面就一起來看看解決BIOS設置找不到USB-HDD選項的方法;開啟電腦,使用快捷鍵打開BIOS設置界面,然後選擇「Advanced BIOS Features」回車確認;