行內編輯時間框


        最早之前寫過兩篇關於bootstrap table的文章:

1.http://www.cnblogs.com/zhengyeye/p/6561430.html

2.http://www.cnblogs.com/zhengyeye/p/8442129.html

        果然在無數次的與后台管理系統打交道的過程中,必不可免的又遇到了它——

基礎表格:

1.http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/

實現代碼:

 1 $toptable.bootstrapTable({
 2             url: "/dcenter/dealamount/temporarylist",//獲取所有數據的接口
 3             striped: true,      //是否顯示行間隔色
 4             cache: false,      //是否使用緩存,默認為true,所以一般情況下需要設置一下這個屬性(*)
 5             pageNumber:1,      //初始化加載第一頁,默認第一頁
 6             pageSize: 5,      //每頁的記錄行數(*)
 7             pageList: [5],  //可供選擇的每頁的行數(*)
 8             queryParamsType:'',
 9             sidePagination: "server", //
10             toolbar:'#toolbarTop',
11             uniqueId:'id',
12             pagination:true,
13             paginationLoop:false,
14             showExport: true,                     //是否顯示導出
15             exportDataType: "basic",              //basic', 'all', 'selected'.
16             columns: [ {
17                 width: '1%',
18                 radio: true,
19                 valign: 'middle'
20             },{
21                 field: 'id',//與返回數據對象屬性一致
22                 title: '序號',//表頭顯示
23                 valign:'middle',
24                 align: 'center',
25                 width: '1%',
26             }, {
27                 field: "startdate",
28                 title: "起始日期",
29                 valign:'middle',
30                 align: 'center',
31                 width: '15%',
32              formatter: function (value, row, index) {
33                         if (value) {
34                             return moment.unix(value).format("YYYY-MM-DD");
35                         }
36                 }
37 ....

進階篇:可編輯的表格

2.https://github.com/wenzhixin/bootstrap-table/tree/master/src/extensions/editable

實現代碼:

 1  $table1.bootstrapTable({
 2             url: '/dcenter/steel/list?mark=4',//獲取所有數據的接口
 3             striped: true,      //是否顯示行間隔色
 4             cache: false,      //是否使用緩存,默認為true,所以一般情況下需要設置一下這個屬性(*)
 5             pageNumber:1,      //初始化加載第一頁,默認第一頁
 6             pageSize: 5,      //每頁的記錄行數(*)
 7             pageList: [5],  //可供選擇的每頁的行數(*)
 8             queryParamsType:'',
 9             sidePagination: "server", //
10             toolbar:'#toolbar',
11             uniqueId:'id',
12             pagination:true,
13             paginationLoop:false,
14             columns: [{
15                 width: '1%',
16                 radio: true,
17                 valign: 'middle'
18             },{
19                 field: 'id',//與返回數據對象屬性一致
20                 title: '序號',//表頭顯示
21                 valign:'middle',
22                 align: 'center',
23                 width: '1%'
24             },{
25                 field: 'startdate',
26                 title: '起始日期',
27                 valign:'middle',
28                 align: 'center',
29                 width: '15%',
30  editable: {
31                     type: 'date',
32                     title: '起始日期',
33                     placement: 'bottom',
34                     datepicker: {
35                         language: 'zh-CN',
36                     },
37                     validate: function (value) {
38                         value=jQuery.trim(value);
39                         if (value == '') {
40                             return '開始時間不能為空!';
41                         }
42                     }
43                 }
44             },
45 ....


 

1.以為這樣就可以完美的解決所有的需求~~

        你永遠滿足不了產品的需求:要求開始時間不能選給定日期之前的日期,截止時間不能選給定時間之后的日期(其實就是今天之后的日期);於是在摸爬滾打中再次看看這個可編輯的行內日期框,就找到了很多文檔:

1.http://bootstrap-datepicker.readthedocs.io/en/latest/events.html

2.http://vitalets.github.io/bootstrap-datepicker/

        原因均在於行內編輯的日期框是基於bootstrap-datepicker來擴展的,於是只能從中找方法……

        還真的找到了一種屬性,可以滿足這樣的需求:

        看起來非常完美!結果,自己就又被坑了好久……

拿不到給 startDate賦值的字符串!!!

有大神研究過的,可以順便分享一下經驗。。。。



 

        強迫症者的毛病就是想要事事達到完美,但是無奈能力有限,最終還是沒有找到如何給startdate賦值的方法。最終,只能棄之,換種活法:

 1 ...
 2 {
 3                 field: "startdate",
 4                 title: "起始日期",
 5                 valign:'middle',
 6                 align: 'center',
 7                 width: '15%',
 8                 formatter: function (value, row, index) {
 9                     return "<input id='starttime_"+row.id+"' class='starttime-item' value='"+value+"' style='border:1px solid #e8e8e8;'></input>";
10                 }...

        依舊跟以往一樣,正常返回table列,只是在時間那一列返回值為input框,然后使用layerui中的laydate組件實現這一功能:http://www.layui.com/laydate/;在上面的表格初始化完成后,在onLoadSuccess方法中增加:

 1 ...    // }
 2             }],
 3             onLoadSuccess:function(data){
 4                  lay('.starttime-item').each(function(){
 5                     laydate.render({
 6                         elem: this,
 7                         min:jQuery(this).val(),
 8                         max:-1,//昨天
 9                         btns: ['confirm'],
10                         // done: function(value, date, endDate){
11                         //     console.log('111111111'+value); //得到日期生成的值,如:2017-08-18。
12                         //     jQuery(this).attr('value',value);
13                         // }
14                     });
15                 });
16                 lay('.endtime-item').each(function(){
17                     laydate.render({
18                         elem: this,
19                         min:jQuery(this).parent().prev().find('input').val(),
20                         max:0,//明天
21                         btns: ['confirm'],
22                         // done: function(value, date, endDate){
23                         //     console.log('22222222'+value); //得到日期生成的值,如:2017-08-18。
24                         //     jQuery(this).attr('value',value);
25                         // }
26                     });
27                 });
28             }
29         });

        當一種辦法不能解決問題的時候,糾結一段時間后就該試着找另外一種方法,而不要固步自封,多學、再靈活點~

 


免責聲明!

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



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