Javascript 如何向knockout.js中已经绑定了数据的元素添加额外的事件?
我有一个像这样的日期控件Javascript 如何向knockout.js中已经绑定了数据的元素添加额外的事件?,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我有一个像这样的日期控件 <input data-bind="value: formatDateTime(ko.unwrap(Started)), css: { validationElement: validateItem(Started, 'Started') }, event: { change: function(d, e) { if (Started != $(e)[0].target.value && dateWheelShown ==
<input data-bind="value: formatDateTime(ko.unwrap(Started)), css: { validationElement: validateItem(Started, 'Started') }, event: {
change: function(d, e) {
if (Started != $(e)[0].target.value && dateWheelShown == true) {
$data.Started(dateToISO($(e)[0].target.value,'DD/MM/YYYY HH:mm'));
}
}
}, id: 'Started' + '_' + Id()" data-onthemove_dateformat="DD/MM/YYYY HH:mm" class="Mobile_DateTimePick ui-input-text ui-body-c ui-corner-all ui-shadow-inset ui-mini" data-mini="true" name="Started" id="scoller1400844006695" readonly="">
对于某些日期控件,我需要在某些用户操作上添加其他事件。如何向已绑定数据的元素注入额外的事件?您可以使用
ko添加事件
ko.applyBindingsToNode(input, {
event: {
keydown : function() {
alert("onKeydown")
}
}
})
*
*-演示源:
Html
<input id="inputId" data-bind="event: {
change: function(d, e) {
alert('onChange');
}
}"/>
<button data-bind="click: addkeypressEvent">Add evend</button>
var vm = {
addkeypressEvent: function()
{
var input = document.getElementById("inputId");
ko.applyBindingsToNode(input, {
event: {
keydown : function() {
alert("onKeydown")
}
}
})
}
}
ko.applyBindings(vm)
你真的需要吗?没有解决方法吗?@GôTô我们更愿意避免使用黑客,我为我想要附加的附加事件定义了良好的事件处理程序,并且它们已经在整个系统中使用。你会考虑什么解决方法?这取决于你为什么需要这个。可能从一开始就声明事件,但是有一个初始的if
子句,只在特定的条件下执行代码circumstances@GôTô那么您要说的是添加元素上的所有事件,然后将普通事件处理程序包装在函数()中{if(isonmouseovereventracive){normalOnMouseOverEventHandler();}}对于每种类型的事件?我想这可以作为一个解决办法。类似的,我不知道所有的背景,不知道你是否能做到。小心返回值