2

Knockout.js 的奇怪问题,而它不会识别重置后选择的日期,但只能识别相同的日期。

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

  1. 选择任何日期
  2. 点击重置
  3. 选择您在步骤 1 中选择的同一日期

如何?什么?为什么?

代码:

<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);

注意:该问题仅适用于Google Chrome v20+,它带有用于 html5 日期输入控制的内置日期选择器。因此标签。

4

1 回答 1

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/

于 2013-04-25T14:24:36.093 回答