我正在使用Knockout JS库来绑定我的Web应用程序中的
HTML5输入控件,该应用程序旨在在iPad(iOS5,Safari 5.1)上运行.绑定适用于输入类型,如文本和选择,但不适用于日期.通过datepicker选择日期值后,该值不会绑定到viewmodel属性(实际上没有保存).
这就是我的HTML看起来的样子.
<input id="dob" name="dob" type="date" data-bind="value: dob" />
ko.bindingHandlers.datePicker = { init: function (element,valueAccessor) { ko.utils.registerEventHandler(element,"change",function () { var observable = valueAccessor(); observable($(element).val()); }); },update: function (element,valueAccessor) { var value = ko.utils.unwrapObservable(valueAccessor()); $(element).val(value); } };
将HTML代码更改为 –
<input id="dob" name="dob" type="date" data-bind="datePicker: dob" />
奇怪的是,即使那个事件也没有解雇.请注意,在两种情况下,绑定在Opera和Safari浏览器的Windows XP中完美地发生.
最终,我通过在自定义绑定中使用’blur’事件而不是’change’来解决我的问题.现在正在调用事件处理程序,我手动设置日期控件的值.
现在我的问题是,这是我没有正确做的事情,如果没有那么为什么HTML5日期控件的更改事件不会触发,无论是默认还是通过自定义绑定?我希望日期控件按预期工作.