2017-06-07 245 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),这就是诀窍。谢谢您的帮助。