我有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,有一个按键,这使我无法在文本框中写任何东西。
答案 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。