BootStrap 智能表單系列 四 表單布局介紹


表單的布局分為自動布局和自定義布局兩種:

自動布局就是根據配置項中第二級配置項中數組的長度來自動使用不同的bootstrap柵格,通過設置autoLayout為true可以實現自動布局

自動以布局就是根據autoLayout來決定使用的柵格,通過設置autoLayout:'1,2,1,2,2,4' 表示 第一、二列占3格,第三列占6格子

自動布局代碼如下所示(https://github.com/xiexingen/Bootstrap-SmartForm/blob/master/demo/form2-auto-layout.html):

<!DOCTYPE html>
<html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>自動布局</title>
        <link rel="stylesheet" href="../css/bootstrap.css">
        <script src="../lib/jquery.js"></script>
        <script src="../lib/bootstrap.js"></script>
        <!--工具方法-->
        <script src="../scripts/global.js"></script>
        <!--插件-->
        <script src="../scripts/plugin.js"></script>
    </head>
    
    <body>
        <div class="panel panel-default">
                <div class="panel-heading"><label>自動布局</label></div>
            <div class="panel-body">
                <form action="#" id="formContainer" class="form form-horizontal"></form>
            </div>
        </div>
         <div class="panel panel-default">
            <div class="panel-heading"><label>介紹</label></div>
            <div class="panel-body">
                <h3>所謂的自動布局為:根據單個配置組的個數來自動使用不同的柵格,如:數組里面項數位2,則使用2,4,2,4布局</h3>
                <p>依賴於bootstrap個柵格樣式,僅支持12整分的格式,如果你配置5項,是不支持的</p>
            </div>
        </div>
        <script>
            $(function () {
                var eles=[
                    [
                        {ele:{type:'text',name:'UserName',title:'用戶名:',required:true}},
                        {ele:{type:'radio',name:'sex',title:'性別:',items:[{text:'男',value:1},{text:'女',value:2}]}},
                    ],
                    [
                      {ele:{type:'checkbox', name:'plant',title:'使用平台:',items:[{text:'APP',value:'app'},{text:'web',value:'web'}]}},
                      {ele:{type:'select',name:'province',title:'省份:',withNull:true,items:[{text:'廣東',value:'GD'},{text:'湖南',value:'HN'}]}}
                    ],
                    [
                       {ele:{type:'text',name:'DisplayName',title:'顯示名稱:'}},
                       {ele:{type:'datetime',name:'FromeDate',title:'有效期:'}},
                       {ele:{type:'datetime',name:'ToDate',title:'~'}}
                    ]
                ];
                //隱藏表單元素主要用於編輯時候后台可以區別開來
                var hides = [{ id: 'GUID' }];
    
                var bsForm = new BSForm({ eles: eles, hides: hides, autoLayout:true }).Render('formContainer');
            });
        </script>
    </body></html>

 

運行效果圖:

可以看到我配置文件中第一、2項配了2列,第三項配置了3列,所以生成的div.form-group 第一項和第二項使用:2,4  第三項使用:1,3 從界面來看ui顯示好不友好,所以autoLayout:true一般用於特殊場景及每一項都是相等的情況下使用。

 

自定義布局代碼(https://github.com/xiexingen/Bootstrap-SmartForm/blob/master/demo/form2-fix-layout.html):

<!DOCTYPE html>
<html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>自定義布局</title>
        <link rel="stylesheet" href="../css/bootstrap.css">
        <!--自定義站點樣式-->
        <link rel="stylesheet" href="../css/site.css">
        <script src="../lib/jquery.js"></script>
        <script src="../lib/bootstrap.js"></script>
        <!--工具方法-->
        <script src="../scripts/global.js"></script>
        <!--插件-->
        <script src="../scripts/plugin.js"></script>
    </head>
    
    <body>
        <div class="panel panel-default">
                <div class="panel-heading"><label>自定義布局</label></div>
            <div class="panel-body">
                <form action="#" id="formContainer" class="form form-horizontal"></form>
            </div>
        </div>
         <div class="panel panel-default">
            <div class="panel-heading"><label>介紹</label></div>
            <div class="panel-body">
                <h3>固定布局,即根據配置的布局來布局</h3>
                <p>如果你配置的autoLayout:1,2 將使用1,2柵格來顯示</p>
                <p>如果你配置的autoLayout:1,2,2,4 第一個元素將使用1,2來布局,第二個將使用2,4來布局 如果沒有2,4系統將會自動尋找1,2</p>
            </div>
        </div>
        <script>
            $(function () {
                var eles=[
                    [
                      {ele:{type:'text',name:'UserName',title:'用戶名:',required:true}},
                      {ele:{type:'radio',name:'sex',title:'性別:',items:[{text:'男',value:1},{text:'女',value:2}]}},
                      {ele:{type:'checkbox', name:'plant',title:'使用平台:',items:[{text:'APP',value:'app'},{text:'web',value:'web'}]}},
                      {ele:{type:'select',name:'province',title:'省份:',withNull:true,items:[{text:'廣東',value:'GD'},{text:'湖南',value:'HN'}]}}  
                    ],
                    [
                           {ele:{type:'text',name:'DisplayName',title:'顯示名稱:'}},
                           {ele:{type:'datetime',name:'FromeDate',title:'有效期:'}},
                           {ele:{type:'datetime',name:'ToDate',title:'~'}}
                    ]
                ];
                //隱藏表單元素主要用於編輯時候后台可以區別開來
                var hides = [{ id: 'GUID' }];
    
                var bsForm = new BSForm({ eles: eles, hides: hides, autoLayout: '1,2,1,2' }).Render('formContainer');
            });
        </script>
    </body></html>

效果圖如下:

note:如果頁面有4列,但是配置的autoLayout不足的情況后面的部分將會使用前面的布局,即將第一列作為缺省的配置列

 

上一章:BootStrap 智能表單系列 三 分塊表單配置的介紹

下一章:BootStrap 智能表單系列 五  表單依賴插件處理

本系列首頁:BootStrap 智能表單系列 首頁 (已完結)


免責聲明!

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



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