无法在knockbox中调用keydown方法的texbox中键入文本?

时间:2016-01-22 07:42:20

标签: javascript knockout.js

我有html:

<textarea class="textarea-custom" rows="2" data-bind="event:{keypress: function(data, e){$root.addReply(data, $parent.ID, e)}} "></textarea>

和JS:

var viewModel = {
  addReply: function(data, ID, event){
    event.keyCode === 13 && viewModel.addReplyDiscussion(data, ID, event);
    return true;
},
addReplyDiscussion : function(data, ID, event){
   //code here
}

}

我遇到的问题是我无法在任何调用javascript方法按键的文本框中编写任何文本。 据我所知,这个方法被称为eveytime,有一个按键,这使我无法在文本框中写任何东西。

1 个答案:

答案 0 :(得分:0)

默认情况下,如果您为其附加处理程序,Knockout会阻止事件的默认操作,在keypress的情况下,该字符会将字符添加到字段中。告诉KO不要这样做,return true来自你的处理程序。

您的addReply正在返回true,但您的处理程序不是,因为您正在回绕addReply的函数是处理程序。所以将return添加到您的包装器中:

data-bind="event:{keypress: function(data, e){return $root.addReply(data, $parent.ID, e);}} "
Here -----------------------------------------^

请参阅“注释3:允许默认操作”in the documentation