Knockout JS:在iPad上更改HTML5日期未触发的事件

前端之家收集整理的这篇文章主要介绍了Knockout JS:在iPad上更改HTML5日期未触发的事件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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日期控件的更改事件不会触发,无论是默认还是通过自定义绑定?我希望日期控件按预期工作.

解决方法

从Knockout的角度来看,你没有做错任何事.从我通过测试和稍微研究一下来看,这些事件真的不会被解雇(即使在图片中没有Knockout).

您可以执行以下操作来避免自定义绑定:

< input type =“date”data-bind =“value:myDate,valueUpdate:'blur'”/>

原文链接:https://www.f2er.com/js/156404.html

猜你在找的JavaScript相关文章