【问题标题】:Javascript with jquery datepicker using knockout带有 jquery datepicker 的 Javascript 使用敲除
【发布时间】:2012-05-17 18:31:54
【问题描述】:

我有一个基于来自jQuery UI datepicker change event not caught by KnockoutJS 的敲除和 jquery datepicker 的数据绑定的问题

只要日期格式为 dd-mm-yy,它就可以正常工作。一旦我将日期格式更改为 MM-yy,数据绑定就不再更新。无论我在列表框中选择什么,日期都设置为今天的日期。关于如何完成这项工作的任何提示?我在多个级别上有多个控件,所以我更不想使用这个解决方案:Knockout with Jquery UI datepicker, MM/YY only

提前致谢。

Javascript:

ko.bindingHandlers.datepicker = {
    init: function (element, valueAccessor, allBindingsAccessor) {
        $(element).datepicker({
            dateFormat: "dd-mm-yy",
            //dateFormat: "MM-yy",
            changeYear: true,
            changeMonth: true
        });

        //handle the field changing
        ko.utils.registerEventHandler(element, "change", function () {
            var observable = valueAccessor();
            observable($(element).datepicker("getDate"));
        });

        //handle disposal (if KO removes by the template binding)
        ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
            $(element).datepicker("destroy");
        });

    },
    update: function (element, valueAccessor) {
        var value = ko.utils.unwrapObservable(valueAccessor()),
            current = $(element).datepicker("getDate");

        if (value - current !== 0) {
            $(element).datepicker("setDate", value);
        }
    }
};

html:

 <td><input class="dateField" data-bind="datepicker: plannedStartDate" /></td>

视图模型:

...
self.plannedStartDate = ko.observable();
...

【问题讨论】:

    标签: javascript datepicker format knockout.js


    【解决方案1】:

    这似乎是 jquery datepicker 的一个错误。无论何时使用该格式,getDate 都不会返回正确的值。

    我有一个可能对您有用的部分解决方案,它可以重新创建您在链接中指定的解决方案。

    http://jsfiddle.net/madcapnmckay/tKxAT/

    它使用 datejs 来解析从 datepicker 返回的 datetext。不是很好,因为当天信息丢失了,但这取决于你是否想要。如果不是,我建议您可能必须找到另一个日期选择器或更改格式以包含日期。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2017-11-05
      • 2016-04-27
      • 2017-02-07
      • 2017-01-12
      • 1970-01-01
      • 2012-10-29
      • 2012-06-28
      • 2015-08-03
      • 2013-01-06
      相关资源
      最近更新 更多