Jquery datepicker按钮运行不正常

时间:2016-12-23 12:59:03

标签: angularjs jquery-ui jquery-ui-datepicker

我正在使用datepicker作为我的观点。我也使用angularjs。问题是,当我使用ok按钮时,它不会改变ng-model状态。它仍然显示ng-empty。我用这个值计算另一个字段,你可以忽略它。 告诉我们如何才能将okke ok按钮激活而不是onClose?当用户选择月份和年份时,我需要确保ng模型发生变化。 我的约会选择器:       enter image description here

 $(function () {
            $('.date-picker').datepicker({

                yearRange: "-5:+0",
                showButtonPanel: true,
                dateFormat: 'MM yy',
                changeMonth: true,
                changeYear: true,
                closeText: 'OK',
                beforeShow: function () {
                    $(this).datepicker('widget').addClass('hide-calendar');
                    if ((selDate = $(this).val()).length > 0) {
                        iYear = selDate.substring(selDate.length - 4, selDate.length);
                        iMonth = jQuery.inArray(selDate.substring(0, selDate.length - 5), $(this).datepicker('option', 'monthNames'));
                        $(this).datepicker('option', 'defaultDate', new Date(iYear, iMonth, 1));

                        $(this).datepicker('setDate', new Date(iYear, iMonth, 1));
                    }
                },
                onClose: function (dateText, inst) {
                    $(this).datepicker('widget').removeClass('hide-calendar');
                    var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
                    var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
                    $(this).datepicker('setDate', new Date(year, month, 1));

                    var monthNames = ["January", "February", "March", "April", "May", "June",
                            "July", "August", "September", "October", "November", "December"
                    ];

                    var mN = $("#monthNo").val();

                    if (mN == '') {
                        return;

                    }

                    var tm = parseInt(month) + parseInt(mN-1)
                    if (tm > 11) {
                        tm = tm - 12;
                        year =parseInt(year) + 1;
                    }

                    $("#to").val(monthNames[parseInt(tm)] + " " + year);
                }


            }).click(function () {
               $('.ui-datepicker-calendar').hide();
            }).attr("readonly", true);
        });

1 个答案:

答案 0 :(得分:-1)

$ scope。$ apply()是多余的。尝试$ scope。$ digest()。但是请记住,jquery插件在角度方面总是有很多问题/尝试使用角度插件/它可以为你节省很多时间