我有一个绑定到可观察数组的表。
我遍历每个项目并创建一个表格行。
数组的每个元素都有一个名为keypress
的属性,它是一个验证按下的键是数字(或小数点)的函数。
在每一行中,我将输入控件的事件绑定到项的keypress
属性,代码按预期执行。
在代码以适当的值退出属性后,将在“ko.bindingHandlers”事件对象(第3092行及以下)中的knoclout-3.1.0.debug.js中计算结果。
尽管我尝试在不同的场合返回true和事件的charCode
值,但在这两种情况下,行3108都无法正确评估handlerReturnValue,并且当执行finally块时,handlerReturnValue计算为undefined ,导致event.preventDefault()方法执行,我的键击被取消,即使它是有效的。输入的HTML如下所示:
<input type="number" data-bind="value: currentValue, event: { keypress: function(data, event) { keypress(event, data) } }"/>
这是每个项目的样子(按比例缩小):
var obj = { keypress: function (data, event) {
if (isNumberKeyDec(event)) {
return true;
} else {
return false;
}
}};
我也试过返回event.charCode
而不是true,在这两种情况下,按键仍会被取消
关于为什么handlerReturnValue
未定义并因此阻止我的正确击键被执行的任何想法?
答案 0 :(得分:0)
您需要更改绑定:
event: { keypress: function(data, event) { return keypress(event, data) } }