Vip*_*rma 6 html5 date knockout.js
我正在使用Knockout JS库来绑定我的Web应用程序中的HTML5输入控件,该应用程序旨在在iPad(iOS5,Safari 5.1)上运行.绑定适用于输入类型,如文本和选择,但不适用于日期.通过datepicker选择日期值后,该值不会绑定到viewModel属性(实际上没有保存).
这就是我的HTML看起来的样子.
<input id="dob" name="dob" type="date" data-bind="value: dob" />
Run Code Online (Sandbox Code Playgroud)
我尝试使用自定义绑定解决了我初始化更改事件处理程序的问题.
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);
}
};
Run Code Online (Sandbox Code Playgroud)
将HTML代码更改为 -
<input id="dob" name="dob" type="date" data-bind="datePicker: dob" />
Run Code Online (Sandbox Code Playgroud)
奇怪的是,即使那个事件也没有解雇.请注意,在两种情况下,绑定在Opera和Safari浏览器的Windows XP中完美地发生.
最终,我通过在自定义绑定中使用'blur'事件而不是'change'来解决我的问题.现在正在调用事件处理程序,我手动设置日期控件的值.
现在我的问题是,这是我没有正确做的事情,如果没有那么为什么HTML5日期控件的更改事件不会触发,无论是默认还是通过自定义绑定?我希望日期控件按预期工作.
RP *_*yer 13
从Knockout的角度来看,你没有做错任何事.从我通过测试和稍微研究一下来看,这些事件真的不会被解雇(即使在图片中没有Knockout).
您可以执行以下操作来避免自定义绑定:
<input type="date" data-bind="value: myDate, valueUpdate: 'blur'" />
| 归档时间: |
|
| 查看次数: |
3070 次 |
| 最近记录: |