2017-06-07 242 views
0

我有一個頁面用於創建獨特行,移位和日期組合的生產記錄,以及編輯現有記錄。我有兩個下拉式線和移位,以及一個jQuery日期選擇器。當線改變時,日期選擇器被禁用,並且移動下拉被重置。我想在創建新班次時啓用日期選擇器(在選擇班次後啓用),但我一直無法弄清楚如何執行此操作。這裏是我jQuery代碼:頁面加載時未觸發更改

$(document).ready(function() {     
     $('#lineSel').on('change',function() { 
      $('#shiftSel').find('option:first').attr('selected', 'selected'); 
      $('#datePicker').val('').datepicker('disable'); 
      console.log('Datepicker disabled'); 
     }); 

     $('#shiftSel').on('change',function() { 
      $.ajax({ 
       url: '/api/Shifts/GetDates', 
       data: { plantCd: '@Model.PlantCd', 
         lineId: $('#lineSel').val(), 
         shift: $('#shiftSel').val() 
        }, 
       success: function(e) { 
        var dates = e.toString().split(','); 
        $('#datePicker').datepicker('option', 'beforeShowDay', function(date) { 
         var string = jQuery.datepicker.formatDate('yy-mm-dd', date); 
         return [dates.indexOf(string) == -1]; 
        }); 
       } 
      }); 
      $('#datePicker').datepicker('enable'); 
     }); 

     if ('@Model.Title' !== 'New Shift') { 
      $('#shiftSel').change(); 
     }  

     $('#lineSel').change(); 
}); 

#lineSel是下拉的線,#shiftSel下拉的轉變,​​的日期選擇器。

頁面加載後,如果我更改了行下拉菜單,日期選擇器會像應該那樣禁用它。但是,$('#lineSel').change();執行on('change')代碼(在瀏覽器開發工具控制檯中出現'Datepicker disabled'),但日期選取器未被禁用。

我已經打過電話在ready功能$('#datePicker').datepicker('disable'),增加.change()到事件處理程序結合的結尾,用.change(function()代替on('change', function()),並從this questionthis question其他建議。

任何想法爲什麼日期選取器未在頁面加載時被禁用以及我能做些什麼修復它?使用jQuery UI 1.11.2 in和ASP.NET MVC 5應用程序。

+0

我覺得一個片段/ [demo](https://jsfiddle.net/)好好讓我們測試一下代碼..如果它不是對任何問題造成影響,您可以避免在演示中使用ajax –

+0

檢查https:/ /jsfiddle.net/xpz6h12h/,如果'Model.Title'包含'New Shift',那麼在頁面加載後奇怪的禁用日期選擇器輸入框。隨意提供進一步的細節,以在MVC視圖中創建一個repro。 –

+0

我的小提琴:https://dotnetfiddle.net/cQaQjQ。這是我第一次做小提琴,無法使日期選擇器工作(可能是缺少引用的顯而易見的東西),但它是我的代碼的簡化版本。 @TetsuyaYamamoto,看起來像你的小提琴與我的代碼具有相同的行爲,任何想法? – user3517375

回答

0

用@ TetsuyaYamamoto的小提琴和嘗試不同的事情後,終於想出瞭如何讓它工作。取代$('#lineSel').change()$('#datePicker').prop('disabled', true),這就是訣竅。謝謝您的幫助。