1

我在混合應用程序中使用引導程序v3 datetime picker。有一個標籤它顯示應用程序中的日期和時間值。所以每當用戶clicks on the label它應該顯示一個日期時間選擇器來選擇一個日期和時間。我已經實施並且運作良好。Bootstrap v3 - DateTime Picker - 在iOS設置的值不起作用

現在,當選取器彈出,然後我可以設置一個日期&時間值來顯示當選擇器在屏幕上猛增。

$('#MetngSumryEditStartDateTime').data("DateTimePicker").date(moment(_defaultStDateTime).format('Do MMMM YYYY, h:mm a')); 

拾取器需要具有一個輸入字段進行操作記住。因此,當我在設備上提供文本字段時,軟鍵盤出現!這在我的情況下實際上是必需的,因爲用戶不被允許鍵入文本字段,而是在那裏顯示標籤以顯示日期值&時間。

爲此我給了它一個複選框作爲輸入字段。現在採摘器在Android devices和臺式機browsers上效果很好,如chrome,但在上iOS不起作用

這是完整的代碼列表。

<div class="container"> 
     <div class="row"> 
      <div id='meetingSumDateTimeEndArea'> 
      <span class='start'>End</span> 
      <span class='time' id='meetingSumEndTime'>" + (UserProfile.getUserProfileDetails().MeetingEndTime[i]) + "</span>" 
      <span class='date' id='meetingSumEndDate'>" + UserProfile.getUserProfileDetails().MeetingEndDate[i] + "</span>"  
      </div> 

      <input type='checkbox' id='MetngSumryEditEndDateTime' /> 

     </div> 
    </div> 

    <script type='text/javascript'> 
      $(function() {     
        var _defaultStTime ='9:00 pm'; // hardcoded for testing purpose 
        var _defaultStDate ='29 Mar, 2015'; // hardcoded for testing purpose 

        var _defaultStDateTime = _defaultStDate + ' ' + _defaultStTime ;     
        console.log('_defaultStDateTime=' + _defaultStDateTime ) ; 

        $('#meetingSumDateTimeEndArea').on('click', function(e){ 
         $('#MetngSumryEditEndDateTime').focus(); 
        }); 

        $('#MetngSumryEditEndDateTime').datetimepicker({ format:'Do MMMM YYYY, h:mm a' , sideBySide: true , defaultDate: _defaultStDateTime });                
        $('#MetngSumryEditEndDateTime').datetimepicker().on('dp.change',function(e) { 

         $('#MetngSumryEditEndDateTime').data("DateTimePicker").date(moment(_defaultStDateTime).format('Do MMMM YYYY, h:mm a'));  

         console.log(e.date.format('DD MMM, YYYY') ); 

         var tm = e.date.format('hh:mm a').split(' '); 
         console.log(tm[0] + " " + tm[1]);      

         console.log(e.date.format('hh:mm a') ); 

        }); 

      }); 

    </script> 

更新

我嘗試以下建議v4.13.28並設置focusOnShow: false但還是鍵盤彈出。我試着用文本字段。

現在我回到checkbox領域,以防止軟鍵盤,但問題是在iOS上。

我給它一個初始日期和時間值,所以當一個選擇器的iOS設備上打開了,然後first time it shows the current time,如果你切換到另一個時間和關閉選擇器,並再次打開它,然後它顯示正確的最後修改時間。但是,在日期爲的情況下,打開時會顯示正確的供應日期。

因此,處理日期很好,但是第一次只有時間值設置的問題。

我該如何解決?

回答

0

版本4.13.28(當前在dev branch)介紹了focusOnShow

當設置爲false文本框中輸入不會得到焦點,應防止鍵盤顯示在移動設備上

+0

好的,謝謝,讓我試試看。 – AAhad 2015-04-07 03:40:44

+0

今天我有機會嘗試這個版本。但它仍然給出同樣的問題。請建議? – AAhad 2015-05-26 11:39:45

0

經過長期努力,我發現這個問題。

問題在於Safari(iOS)上的JavaScript Date對象實現。

的DateTimePicker組件使用日期/時間操縱力矩時刻取決於下鋪設平臺的日期/時間實現

現在,當我使用下面的代碼來提取時間的信息。

moment("1999-01-01 11:00 am").format("HH:mm:ss"); 

這使得在Android &的Windows平板電腦準確的時刻信息。 但是這在iOS上無法識別......說.....無效的日期。

現在把它挖出來進一步下跌,如果我給出相同的價值爲javascript日期對象

new Date("1999-01-01 11:00 am"); 

這同樣正確地將其轉換在Android & Windows設備,但無法在iOS ... .says ....無效的日期。

這意味着Date對象實現在iOS上發生故障或出現問題。

要解決我的問題:

我爲了只提取時間數據提供了另一種參數的時刻。

moment("1999-01-01 11:00 am" , ['h:mm a']).format('HH:mm:ss'); 

現在這項工作無處不在。

注意:1999-01-01 11:00 am是硬編碼爲了這個問題,雖然他們動態地在應用程序中。