2016-05-25 72 views
0

我遇到此問題,其中日期更改觸發兩次,用戶選擇一個日期並且日期格式爲「dd-mm-yyyy」,但當用戶單擊日期字段或更改日期,它會更改爲「YYYY-MM-DD」(我需要它在此格式提交)日期選擇器更改日期觸發兩次

我不知道我在做什麼錯在這裏。

相關代碼:

<input type="text" data-bind="value: DateOfBirth" value="" required="" name="DateOfBirth" id="DateOfBirth" placeholder="dd/mm/yyyy" data-val-required="Date of Birth is required." data-val="true" autocomplete="off"class="form-control input-sm datepicker" aria-required="true" onkeydown="return false" /> 

<script> 
     $('.datepicker').datepicker({ 
      startView: "decade", 
      minViewMode: "days", 
      format: "dd/mm/yyyy", 
      autoclose: true, 
      endDate : '0' 
     }); 

    $('#DateOfBirth').change(function() 
    { 
     var date = $(this).val(); 
     if (date != null && date != "") 
     { 
      var dateArray = date.split('/'); 
      if (dateArray.length === 3) 
      { 
       myModel.DateOfBirth(dateArray[2] + "-" + dateArray[1] + "-" + dateArray[0]); 
      } 
     } 
     $(this).valid(); 
    }); 

</script> 

回答

0

我設法使用jQuery UI的修復它,

<input type="text" data-bind="value: DateOfBirth" value="" required="" name="DateOfBirth" id="DateOfBirth" placeholder="dd/mm/yyyy" data-val-required="Date of Birth is required." data-val="true" autocomplete="off"class="form-control input-sm datepicker" aria-required="true" onkeydown="return false" /> 

<input type="hidden" id="BirthDate" value="" data-bind="value: DateOfBirth" /> 

<script> 
     $(function() { 

      $('#DateOfBirth').datepicker({ 
       format: 'dd/mm/yyyy', 
       altField: "#BirthDate", 
       altFormat: "yy-mm-dd" 
      }); 

     $('#DateOfBirth').change(function() { 
      var date = $("#BirthDate").val(); 
      if (date != null && date != "") { 
       myModel.DateOfBirth(date); 
      } 
     }); 

</script> 
0

myModel不被任何定義。

你可以做這樣的:

$('#DateOfBirth').change(function() { 
     var date = $(this).val(); 
     if (date != null && date != "") { 
     var dateArray = date.split('/'); 
     if (dateArray.length === 3) { 
      $('#DateOfBirth').val(dateArray[2] + "-" + dateArray[1] + "-" + dateArray[0]); 
     } 
     } 
     $(this).valid(); 
    }); 

但同樣你會看到在輸入只是YYYY-MM-DD格式。因爲它在更改時進行更新,並且每次選擇日期時都會更改,所以始終覆蓋原始格式。

你可以在這裏進行測試https://jsfiddle.net/vo7k676n/

你可以做格式轉換服務器端或形式,而不是提交輸入變化。

相關問題