easyui 如何為標簽動態追加屬性實現渲染效果


簡述一下在項目遇到的問題,這邊有一個需求,選擇不同類型,加載不同的div標簽(其中屬性是否必填是區分類型的關鍵)

html界面是這樣的

<div class="grid_1 lbl">規則類型:</div>
<div class="grid_3 val"><input type="text" data-bind="comboboxValue:form.RULETYPE, datasource:dataSource.RuleTypes,comboboxReadOnly:readonly"  data-options="onChange:RuleTypeChange"   
class="z-txt easyui-combobox" required="true" /></div> <div class="clear"></div>
<div id="showDiv"> <div class="grid_1 lbl">規則對象:</div> <div class="grid_3 val"> <input id="boTable" data-bind="combogridValue:form.BOCLASS,combogridReadOnly:readonly" class="z-txt easyui-combogrid" data-options="panelWidth:600, mode: 'remote', rownumbers:true, idField:'MID', textField:'CODENAME', pagination:true, method: 'get', loadMsg: '正在加載數據...', url:'/api/Psb/PssValidateRule/GetBoClass', columns:[[ { field: 'MID', title: 'MID', width: 150 }, { field: 'CODENAME', title: '名稱', width: 200 }, { field: 'FULLNAME', title: '對象全名', width: 200,hidden:true}, { field: 'TABLENAME', title: '對象名', width: 200,hidden:true}, ]], fitColumns: true, onSelect:onSelectSourceBill " /> </div> <div class="grid_1 lbl">計費對象:</div> <div class="grid_3 val"> <input id="boField" data-bind="combogridValue:form.BOFIELD,combogridReadOnly:readonly" class="z-txt easyui-combogrid" /> </div> <div class="grid_1 lbl">開始數量:</div> <div class="grid_3 val"><input id="beginNum" type="text" data-bind="numberboxValue:form.BEGINNUM,numberboxReadOnly: readonly" class="z-txt easyui-numberbox" data-options="min: 0, precision: 0" /></div> <div class="clear"></div> <div class="grid_1 lbl">規則條件:</div> <div class="grid_3 val"><input id="costWhere" type="text" data-bind="value:form.COSTWHERE,readOnly:readonly" class="z-txt easyui-validatebox" /></div> <div class="grid_1 lbl">計算函數:</div> <div class="grid_3 val"><input id="costMethod" type="text" data-bind="value:form.COSTMETHOD,readOnly:readonly" class="z-txt easyui-validatebox" /></div> <div class="grid_1 lbl">結束數量:</div> <div class="grid_3 val"><input id="endNum" type="text" data-bind="numberboxValue:form.ENDNUM,numberboxReadOnly: readonly" class="z-txt easyui-numberbox" data-options="min: 0, precision: 0" /></div> <div class="clear"></div> </div> <div class="grid_1 lbl">計費單價:</div> <div class="grid_3 val"><input type="text" data-bind="numberboxValue:form.COSTPRICE,numberboxReadOnly: readonly" class="z-txt easyui-numberbox" data-options="min: 0, precision: 2" required="true" /></div> <div class="grid_1 lbl">超出單價:</div> <div class="grid_3 val"><input type="text" data-bind="numberboxValue:form.OVERPRICE,numberboxReadOnly: readonly" class="z-txt easyui-numberbox" data-options="min: 0, precision: 2" /></div> <div class="clear"></div>

在選擇規則類型時,動態隱藏顯示divc層,當顯示div層時,為div下的每個標簽添加必填屬性;反之,移除對應標簽的必填屬性

js方法

            //加載時,默認隱藏div
            $("#showDiv").attr("style", "display:none;");   //隱藏div  
            //獲取規則類型
            var ruleType = @((int)Dxc.Persistent.DxcEnumCostRuleType.Change);  //變動
            //規則類型切換
            RuleTypeChange = function (newValue, oldValue) {
                //當規則類型是變動時
                if (newValue == ruleType) 
                {
                    $("#showDiv").attr("style", "display:block;");   //顯示div     
                    //jquery 動態追加屬性(已追加,不渲染效果)
                    //$('#boTable').attr("required",true);
                    //easyui 動態追加屬性
                    $('#boTable').combogrid({required:true});
                    $('#boField').combogrid({required:true});
                    $('#beginNum').numberbox({required:true});
                    $('#endNum').numberbox({required:true});
                    $('#costWhere').validatebox({required:true});
                    $('#costMethod').validatebox({required:true});
                  
                }else{
                    $("#showDiv").attr("style", "display:none;");   //隱藏div 
                    //jquery 動態移除屬性(已移除,不渲染效果)
                    //$('#boTable').removeAttr("required");
                    //easyui 動態移除屬性
                    $('#boTable').combogrid({required:false});
                    $('#boField').combogrid({required:false});
                    $('#beginNum').numberbox({required:false});
                    $('#endNum').numberbox({required:false});
                    $('#costWhere').validatebox({required:false});
                    $('#costMethod').validatebox({required:false});
                }
            }

注意:原先考慮用jquery的動態添加屬性和移除屬性,但是出現一種情況,debug查看頁面是加上屬性了,但是界面沒有渲染,所以改用easyui的方式

切換界面效果

1)圖1

2)圖2

參考來源:

http://www.mamicode.com/info-detail-2243131.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM