页面加载时未触发更改

Change not being triggered on page load

我有一个页面,用于为独特的生产线、班次和日期组合创建生产记录,以及编辑现有记录。我有两个用于行和班次的下拉菜单,还有一个用于日期的 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 是班次的下拉菜单,#datePicker 是日期选择器。

页面加载后,如果我更改行下拉菜单,日期选择器将按预期禁用。但是,$('#lineSel').change(); 执行 on('change') 代码('Datepicker disabled' 显示在浏览器开发工具控制台中),但日期选择器不会被禁用。

我尝试在 ready 函数中调用 $('#datePicker').datepicker('disable'),将 .change() 添加到事件处理程序绑定的末尾,使用 .change(function() 而不是 [=23] =],以及来自 this question and this question.

的其他建议

知道为什么日期选择器在页面加载时没有被禁用吗?我可以做些什么来解决这个问题?在和 ASP.NET MVC 5 应用程序中使用 jQuery UI 1.11.2

在研究了@TetsuyaYamamoto 的 fiddle 并尝试了不同的东西之后,终于弄清楚了如何让它工作。将 $('#lineSel').change() 替换为 $('#datePicker').prop('disabled', true) 就成功了。谢谢您的帮助。