为什么在我的场景中handlerReturnValue未定义?

时间:2014-08-20 18:10:56

标签: javascript knockout.js

我有一个绑定到可观察数组的表。

我遍历每个项目并创建一个表格行。

数组的每个元素都有一个名为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未定义并因此阻止我的正确击键被执行的任何想法?

1 个答案:

答案 0 :(得分:0)

您需要更改绑定:

event: { keypress: function(data, event) { return keypress(event, data) } }