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

Javascript knockout.js事件,跟踪输入文本框中的每个文本更改,javascript,knockout.js,dom-events,Javascript,Knockout.js,Dom Events,我对击倒js还不熟悉。每次文本框中的文本发生更改时,我都要调用一个函数。我做了一些研究,实现了keyup、keydown和keypress,但它们没有正常工作。如果有人能给我一个解决方案,或者请将我重定向到一些对我的场景有帮助的文档。如果有一些关于击出Js中所有事件(内置和自定义)的文档,那将非常有用 要具体说明问题,请执行以下操作: data-bind="value: targetProp, event:{keyup: $parent.changeProp}" 在Js

我对击倒js还不熟悉。每次文本框中的文本发生更改时,我都要调用一个函数。我做了一些研究,实现了
keyup
keydown
keypress
,但它们没有正常工作。如果有人能给我一个解决方案,或者请将我重定向到一些对我的场景有帮助的文档。如果有一些关于击出Js中所有事件(内置和自定义)的文档,那将非常有用

要具体说明问题,请执行以下操作:

  data-bind="value: targetProp, event:{keyup: $parent.changeProp}"
在Js中:

    Inside parent:
     this.changeProp = function () {
                if (condition..) {
                       do something...
                }
            }
      
它不工作与钥匙了。对于简单的解决方案,请给我一些提示,提示在文本框中写入的字符串的长度(在输入和删除的每个文本上)。

您可以使用它在用户开始键入字符时更新视图模型

data-bind="value: targetProp, valueUpdate: 'afterkeydown'"

您还可以手动订阅更改

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

parent.targetProp = ko.observable(originalValue);

parent.targetProp.subscribe(function(newValue) {
    alert("The new value is " + newValue);
});

编辑:对于选项绑定:

<select data-bind="options: myObservableArray, value: selectedValue"></select>
然后:

或者您可以使用最新KO3.2版本的绑定


除了实时更新,它还能正确处理剪切/粘贴、拖动和自动完成。

如果您想在用户键入时实时计算,您可以这样做

HTML


实际上,该值:targetProp绑定在foreach中,其值在父级中是动态的。所谓动态,我指的是可以添加和删除的条目数(targetProp),我希望跟踪每个动态创建的条目的文本。所以,我应该在家长内部实施您的解决方案,我有点困惑如何实施?我知道它是如何更新值的,但我现在不知道如何在foreach父级中的事件中跟踪它。@accssharma您能在问题中发布更多详细信息和代码吗?现在还不太清楚你们想做什么。谢谢你们,我只是通过在我没有做的父项中订阅更新值来完成的。:)谢谢@JoanCharmant,这很有帮助。您能建议我如何在SelectedIndex值更新或SelectedValue值更新选项绑定上执行类似任务吗?@accssharma:请参阅我的编辑。我会为所选的值使用一个专用的observable并订阅它。感谢@JoanChartmant,我还发现
valueUpdate:“change”
也可以订阅所选选项的更新值。在淘汰赛3.2中,这只是一个简单的单行线。检查
self.selectedValue = ko.observable();
self.selectedValue.subscribe(function(newValue) {
    alert("The new value is " + newValue);
});
<input type="text" id="description" class="form-control" maxlength="255" 
data-bind="value:description, event:{keyup:calcDescriptionCount}">
<br>
<span data-bind="text:descriptionCount"></span> charactors left.
self.description = ko.observable("");
self.descriptionCount = ko.observable(255);
self.calcDescriptionCount = function(){
    this.descriptionCount(255 - $("#description").val().length);
};