【发布时间】:2013-06-16 01:47:34
【问题描述】:
我知道您可以使用 subscribe 函数绑定一些代码以在输入更改时运行,并且我知道您可以使用 valueUpdate 数据绑定定义触发更改事件的内容。但是,有没有一种方法可以绑定一段代码以运行在 valueUpdate 的“更改”类型上,并在不同的代码上运行,比如“afterkeydown”、“input”或“paste”类型?
【问题讨论】:
我知道您可以使用 subscribe 函数绑定一些代码以在输入更改时运行,并且我知道您可以使用 valueUpdate 数据绑定定义触发更改事件的内容。但是,有没有一种方法可以绑定一段代码以运行在 valueUpdate 的“更改”类型上,并在不同的代码上运行,比如“afterkeydown”、“input”或“paste”类型?
【问题讨论】:
当然。淘汰赛中的“事件”绑定允许您将处理程序绑定到多个事件,如下所示:
<input type="text" data-bind="event: {keypress: onKeyPress, change: onChange}" />
但请记住,默认情况下,Knockout 会自动停止事件冒泡。在上面的示例中,onKeyPress 处理程序将阻止浏览器处理 keypress 事件,这将导致 change 事件不触发。如果您要绑定多个事件,并且您需要您的事件处理程序不停止浏览器的默认事件处理,只需从您的事件处理程序返回“true”。
您可以在此处查看此代码:http://jsfiddle.net/rrahlf/QEuQR/
【讨论】: