页面加载时未触发更改

时间:2017-06-07 01:09:32

标签: jquery asp.net-mvc jquery-ui jquery-ui-datepicker

我有一个页面,用于为独特的行,班次和日期组合创建生产记录,以及编辑现有记录。我有两个下线和换班,以及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'显示在浏览器开发工具控制台中),但日期选择器不会被禁用。

我尝试在$('#datePicker').datepicker('disable')函数中调用ready,在事件处理程序绑定的末尾添加.change(),使用.change(function()代替{{1}来自this questionthis question的其他建议。

为什么日期选择器在页面加载时没有被禁用以及我能做些什么来修复它?使用on('change', function())jQuery UI 1.11.2应用程序。

1 个答案:

答案 0 :(得分:0)

在玩了@TetsuyaYamamoto的小提琴并尝试不同的事情之后,终于找到了如何让它发挥作用。将$('#lineSel').change()替换为$('#datePicker').prop('disabled', true),这就是诀窍。谢谢您的帮助。