Javascript 敲除日期选择器绑定项不';不要禁用日期选择器

Javascript 敲除日期选择器绑定项不';不要禁用日期选择器,javascript,jquery,jquery-ui,knockout.js,datepicker,Javascript,Jquery,Jquery Ui,Knockout.js,Datepicker,我有一个为日期选择器定制的knockoutJs绑定 ko.bindingHandlers.valueAsDatePicker = {...} 当绑定的输入字段状态(已启用/已禁用)绑定到可观察的KO时,它不会启用/禁用日期选择器图标 HTML <input id="txtRequestedTo" type="text" placeholder="dd/mm/yyyy" data-bind="valueAsDatePicker: reqDateTo, disable: reqDateFr

我有一个为日期选择器定制的knockoutJs绑定

ko.bindingHandlers.valueAsDatePicker = {...}
当绑定的输入字段状态(已启用/已禁用)绑定到可观察的KO时,它不会启用/禁用日期选择器图标

HTML

<input id="txtRequestedTo" type="text" placeholder="dd/mm/yyyy" 
data-bind="valueAsDatePicker: reqDateTo, disable: reqDateFrom().length < 1" />
<input id="txtRequestedTo" type="text" placeholder="dd/mm/yyyy"
    data-bind="valueAsDatePicker: reqDateTo, disable: reqDateFrom.disabled" />

如果元素被禁用,我希望日期选择器被禁用,反之亦然

这里的诀窍是以可观察的方式访问禁用的绑定,以便可以附加手动订阅。此时,禁用表达式的结果被传递到bindingHandler(通过allBindingAccessor)

一旦获得订阅,就可以调用DatePicker的禁用选项

HTML

<input id="txtRequestedTo" type="text" placeholder="dd/mm/yyyy" 
data-bind="valueAsDatePicker: reqDateTo, disable: reqDateFrom().length < 1" />
<input id="txtRequestedTo" type="text" placeholder="dd/mm/yyyy"
    data-bind="valueAsDatePicker: reqDateTo, disable: reqDateFrom.disabled" />

非常感谢罗伯特,

以下是有效的解决方案。

使用knockoutjsv3.1

你必须使用

if (allBindings.has('disable')) {
否则

allBindings.get('disable')

将未定义,因为视图中并非所有datepicker绑定字段都具有disabled属性

谢谢Robert,我今天会试试这个,如果我有任何问题,我会告诉你的。禁用可观察替换工作非常完美,我喜欢它有多整洁。装订部分有一些打字错误,但仍然不起作用。我目前正在调试它。
allBindings.get('disable')