0

我正在使用<input type="date">带有淘汰赛绑定的 html5。我将 webshim 用于不支持 html5 日期的浏览器。

原生 html5 浏览器运行良好,更改日期会更改模型,更改模型以编程方式更改日期输入中显示的日期。

在不支持 html5(例如 IE8)的浏览器上更改日期可以正常工作并更新淘汰模型,但反之则不然。对模型的更改不会传播到 webshim 生成的日期选择器,只会传播到 webshim 使用的隐藏输入。

是否有 webshim 提供的方法或事件我可以调用或触发来告诉它查看数据并在更改后更新 UI?我怎么能写一个淘汰赛绑定来调用它?

4

1 回答 1

2

It turns out webshim requires that you use jQuery().val() to update the date, rather than using the DOM directly. I was able to write a knockout binding that did this by extending the normal value binding:

ko.bindingHandlers.date = $.extend({}, ko.bindingHandlers.value);

ko.bindingHandlers.date.update =  function(element, valueAccessor) {
    // Set value using jQuery val method as this is caught internally by webshim
    $(element).val(valueAccessor()());
};

Then I could use:

<input type="date" data-bind="'date': date">

as would be expected.

于 2014-12-04T14:32:31.620 回答