【发布时间】:2019-01-13 18:54:30
【问题描述】:
我目前正在使用 knockout.js 和 knockout.validation.js 插件,它在大多数情况下都能很好地工作。我一直在努力解决的是在输入模糊时第一次触发验证,然后每次击键都触发验证。我真的觉得下面的代码应该可以解决这个问题。
<input type="text" class="form-control"
data-bind="value: Name,
valueUpdate: Name.isModified() ? 'afterkeydown' : '',
style: { background: Name.isModified() ? 'red' : 'green'}"
/>
由于某种原因,当 isModified() 更改时 valueUpdate 不会更改为 afterkeydown,但背景颜色确实会按照我的预期正确更改。 (那行代码只是用来帮助调试的)。
当 isModified 可观察值发生更改时,我做错了什么导致 valueUpdate 方法无法正确更新?
编辑:
我想我问这个问题可能做得不好。我想知道的是为什么这段代码没有:
<input type="text" class="form-control"
data-bind="value: Name,
valueUpdate: Name.isModified() ? 'afterkeydown' : ''"
/>
表现得像这样的代码:
<!-- ko if: Name.isModified() -->
<input type="text"
class="form-control"
data-bind="value: Name, valueUpdate: 'afterkeydown'" />
<!-- /ko -->
<!-- ko if: !Name.isModified() -->
<input type="text" class="form-control" data-bind="value: Name" />
<!-- /ko -->
在我看来,您不能有条件地绑定到“valueUpdate”属性,而且我无法在任何淘汰文档中确认这一点。在第一种情况下,当 Name.isModified 更新时 valueUpdate 不会更改为 'afterkeydown'。到底是怎么回事?
【问题讨论】:
-
这是一个完整的黑暗拍摄,试试这个
valueUpdate: (Name.isModified() ? 'afterkeydown' : '') -
@Ray 感谢您的评论,但遗憾的是它似乎没有任何不同。
-
不建议使用
value绑定来处理valueUpdate的情况。根据他们建议使用textInput绑定的文档:检查Note 1in:knockoutjs.com/documentation/value-binding.html。
标签: knockout.js knockout-validation