Knockout observable subscribe无法识别Google Chrome中日期输入的更改

时间:2013-04-25 14:15:42

标签: javascript html5 google-chrome knockout.js

Knockout.js的奇怪问题,但它无法识别重置后选择的日期,但只有相同的日期。

要在我的jsFiddle中复制:http://jsfiddle.net/V5JCq/,请按以下步骤操作:

  1. 选择任何日期
  2. cllick reset
  3. 选择您在步骤1中选择的相同日期
  4. 如何?什么?为什么呢?

    代码:

    <input type="button" data-bind="click: resetDate" value="Reset">
    <input data-bind="value : EstimatedDeliveryDate" type="date">
    <span data-bind="html: selectedDate" />
    
    var viewModel = {
        EstimatedDeliveryDate: ko.observable(),
        selectedDate: ko.observable()
    };
    
    viewModel.EstimatedDeliveryDate.subscribe(function (date) {
        viewModel.selectedDate("Date selected: " + date);
    });
    
    viewModel.resetDate = function () {
        viewModel.EstimatedDeliveryDate("");
    };
    
    ko.applyBindings(viewModel);
    

    N.B。:此问题仅适用于谷歌浏览器 v20 +,它附带内置日期选择器,用于html5日期输入控件。因此标签。

1 个答案:

答案 0 :(得分:3)

不确定原因,但似乎没有在该场景中触发change事件。一个简单的解决方法是使用input附加绑定指定您也想要收听valueUpdate事件,如:

<input data-bind="value : EstimatedDeliveryDate, valueUpdate: 'input'" id="EstimatedDeliveryDate" name="EstimatedDeliveryDate" type="date"><span data-bind="html: selectedDate" />

http://jsfiddle.net/rniemeyer/geggJ/