knockout.js事件跟踪输入文本框内的每个文本更改

use*_*307 6 javascript javascript-events knockout.js

我是淘汰赛的新手.我希望每次文本框内的文本更改时都调用一个函数.我研究了abit并实现了keyup,keydown和keypress但它们没有正常工作.如果有人可以给我一个解决方案,或者请将我重定向到一些对我的方案有帮助的文档.如果有关于淘汰赛Js中可用的所有事件(内置和自定义)的某种文档,那将非常有用.

具体问题:

  data-bind="value: targetProp, event:{keyup: $parent.changeProp}"
Run Code Online (Sandbox Code Playgroud)

并在Js:

    Inside parent:
     this.changeProp = function () {
                if (condition..) {
                       do something...
                }
            }
Run Code Online (Sandbox Code Playgroud)

它不适用于密钥.对于简单的解决方案,请给我一些能够提醒文本框内写入的字符串长度的内容(在每个输入和删除的文本上).提前致谢.

dav*_*d.s 8

您可以使用valueUpdate:'afterkeydown',在用户开始输入字符时立即更新您的视图模型.

data-bind="value: targetProp, valueUpdate: 'afterkeydown'"
Run Code Online (Sandbox Code Playgroud)


Sal*_*ali 8

或者您可以使用最新KO 3.2中的textInput绑定

<input data-bind="textInput: userName" />

除了实时更新,它还可以正确处理剪切/粘贴,拖动,自动完成.


Joa*_*ant 3

您还可以手动订阅更改。

\n\n

确保 targetProp 是可观察的,并且在构建父级时,手动订阅更改:\xc2\xa0

\n\n
parent.targetProp = ko.observable(originalValue);\n\nparent.targetProp.subscribe(function(newValue) {\n    alert("The new value is " + newValue);\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

编辑:对于选项绑定:

\n\n
<select data-bind="options: myObservableArray, value: selectedValue"></select>\n
Run Code Online (Sandbox Code Playgroud)\n\n

在js中:

\n\n
self.selectedValue = ko.observable();\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后:

\n\n
self.selectedValue.subscribe(function(newValue) {\n    alert("The new value is " + newValue);\n});\n
Run Code Online (Sandbox Code Playgroud)\n