需要knockoutjs一点帮助和有约束力的按键事件。 我试图挂钩的淘汰赛,使我从一个文本框中的输入按键回暖。 因此,我可以点击一个按钮执行相同的操作。 它是一个有点棘手解释,但希望这的jsfiddle将展示什么,我想要的目的。
http://jsfiddle.net/nbnML/8/
我的问题是,观察到的值不会得到更新,我认为它的东西与可观察到的不被更新,直到焦点移动从文本框离开呢?
对这个问题的任何解决方案。
谢谢!
需要knockoutjs一点帮助和有约束力的按键事件。 我试图挂钩的淘汰赛,使我从一个文本框中的输入按键回暖。 因此,我可以点击一个按钮执行相同的操作。 它是一个有点棘手解释,但希望这的jsfiddle将展示什么,我想要的目的。
http://jsfiddle.net/nbnML/8/
我的问题是,观察到的值不会得到更新,我认为它的东西与可观察到的不被更新,直到焦点移动从文本框离开呢?
对这个问题的任何解决方案。
谢谢!
一种选择是使用valueUpdate
额外的结合力上的每个按键的更新。 例如,你会怎么做:
<input type="text" data-bind="value: InputValue, valueUpdate: 'afterkeydown', event: { keypress: RunSomethingKey }" />
如果这不是你所追求的,那么真的是你想在你的处理器射击元素的变化事件。 例如使用jQuery,你会做这样的事情: $(event.target).change();
。
这将是更好,虽然移动到这个自定义绑定。 也许像(也许应该检查是否valueAccessor()的结果是一个函数):
ko.bindingHandlers.enterKey = {
init: function(element, valueAccessor, allBindings, vm) {
ko.utils.registerEventHandler(element, "keyup", function(event) {
if (event.keyCode === 13) {
ko.utils.triggerEvent(element, "change");
valueAccessor().call(vm, vm); //set "this" to the data and also pass it as first arg, in case function has "this" bound
}
return true;
});
}
};
这里是你的样品更新: http://jsfiddle.net/rniemeyer/nbnML/9/
不打折提交绑定: http://knockoutjs.com/documentation/submit-binding.html
这需要照顾一些IE 9/10陷阱,如更新不及时的观察到的返回键。 有了这个照顾你不需要拦截键码13
HTML:
<form data-bind="submit:RunSomething">
<input type="text" data-bind="value: InputValue" />
<input type="submit" value="test" />
<div data-bind="text: InputValue" />
</form>
码:
var ViewModel = function () {
var self = this;
self.InputValue = ko.observable('');
self.RunSomething = function (ev) {
window.alert(self.InputValue());
}
}
ko.applyBindings(new ViewModel());
在这里看到:
http://jsfiddle.net/jnewcomb/uw2WX/