2011-02-02 90 views
0

我想添加第二个事件处理程序到已经创建的日期选择器。JQuery - 添加另一个事件处理程序,调用前一个

基本上我有一些功能,使datepicker与一堆默认值,包括一个onSubmit处理程序。

我想保留现有的onSubmit处理程序的行为,但也自己捕获事件进行进一步处理。

以下是我正在做的是:

make_datepicker("some_id"); //someone else's code that I can't change 
var prev_submithandler = $("#some_id").datepicker('option', 'onSelect'); 
$("#some_id").datepicker('option', 'onSelect', function(dateText) { 
    prev_submithandler(dateText); 
    // do some other stuff 
}); 

这似乎在调试器中工作很好,但是当我踏进先前提交处理程序,价值“这一”改变是不datepicker的输入字段,但现在是整个DOMWindow对象。这打破了以前提交处理程序中的逻辑。

如果我尝试添加第二个处理程序,第一个处理程序似乎被覆盖(我认为这不是预期的行为?),所以我尝试了这种方法。

我要对所有这一切错了吗?我是一种JavaScript n00b。

回答

0

不知道你做了什么,但听起来像一个范围问题,所以尽量使用function.call或function.apply

例如

$("#some_id").datepicker('option', 'onSelect', function(dateText) { 
    prev_submithandler.call(this, dateText); 
    // do some other stuff 
}); 
相关问题