我是淘汰赛的新手。我希望每次文本框内的文本更改时都调用一个函数。我研究了abit并实现了keyup,keydown和keypress但它们没有正常工作。如果有人可以给我一个解决方案,或者请将我重定向到一些对我的方案有帮助的文档。如果有关于淘汰赛Js中可用的所有事件(内置和自定义)的某种文档,那将非常有帮助。
具体问题:
data-bind="value: targetProp, event:{keyup: $parent.changeProp}"
在Js:
Inside parent:
this.changeProp = function () {
if (condition..) {
do something...
}
}
它无法使用密钥。对于简单的解决方案,请给我一些能够提醒文本框内写入的字符串长度的内容(在每个输入和删除的文本上)。提前谢谢。
答案 0 :(得分:8)
您可以使用valueUpdate: 'afterkeydown'在用户开始输入字符时立即更新您的视图模型。
data-bind="value: targetProp, valueUpdate: 'afterkeydown'"
答案 1 :(得分:8)
或者您可以使用最新KO的<{3}}绑定 3.2
<input data-bind="textInput: userName" />
除了实时更新外,它还能正确处理剪切/粘贴,拖动,自动完成。
答案 2 :(得分:2)
您也可以手动订阅更改。
确保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>
在js:
self.selectedValue = ko.observable();
然后:
self.selectedValue.subscribe(function(newValue) {
alert("The new value is " + newValue);
});
答案 3 :(得分:0)
如果您想要实时计算,就像打字的人一样,您可以这样做。
HTML
<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.
ViewModel JS
self.description = ko.observable("");
self.descriptionCount = ko.observable(255);
self.calcDescriptionCount = function(){
this.descriptionCount(255 - $("#description").val().length);
};