如何对链式事件提出条件?

时间:2013-10-18 14:58:59

标签: javascript jquery events datepicker

我有三个这样的链式事件:

$("#Id")
.click()
.focus()
.blur()

我想要的是什么:

var A = 0;
if(A == 0)
execute blur event

我希望只有在条件已满的情况下才会执行模糊事件。

我试着检查条件是否在模糊事件中被填满但是问题是它执行了模糊功能,基本上没有做任何事情,但我仍然遇到一个问题,我不得不点击两次以获得我从另一个所说的功能事件(注意:不是模糊事件的功能)。

我的主要问题: 我点击一个文本框,显示一个日期选择器,当我选择一个日期时,我的模糊事件执行,因为我离开文本框并从日期选择器中选择一个日期。我的模糊事件有一个回发执行,但问题是我不希望它从我的日期选择器中选择日期时执行。注意:当我选择一个日期时,我选择的日期代码从我选择的那一天开始,这不是你嘲笑的“日期选择器”功能,这与问题无关,但我认为提及它会很好。

如果有可能,我深深体会到答案。 我想到以下的解决方案,我只是想说我已经尝试过但它不起作用: 内部模糊事件:

return false
return true 

2 个答案:

答案 0 :(得分:1)

我想我们都学到了很难的方法,当使用插件时,最好阅读所有文档,因为它实际上可能包含您可能想要用于更改的内容。

我更详细地阅读了jQuery datepicker,并了解到它有一个onClose选项,一旦你点击了datepicker就会执行。所以我基本上做的是我从blur函数中获取代码并将其放在onClose函数(选项)中并且瞧。

代码:

        $('#calWeekF')
            .click(function () { this.select(); })
            .focus(function () { $('#calBtnShow').unbind('click', function () { $.overview.calendar.load() }); })  // De-activate button to prevent duplicate calls to loadCalendar
            .datepicker({
                showWeek: true,
                onSelect: function (date, object) {

                    $.MyProject.calendar.changeDate(new Date(date));

                    $.astra.calendar.changeWeek($("#" + object.id).val());
                    // Add some delay befor activating the button
                    $("#" + object.id).oneTime(200, 'calBtnShow', function () { $('#calBtnShow').click(function () { $.overview.calendar.load() }); });

                },
                onClose: function (date, object){
                    $.astra.calendar.changeWeek($("#" + object.id).val());
                    // Add some delay befor activating the button
                    $("#" + object.id).oneTime(200, 'calBtnShow', function () { $('#calBtnShow').click(function () { $.overview.calendar.load() }); });
                    }
            })

答案 1 :(得分:0)

您可以使用.filter()方法:

$('#Id').click().focus().filter(function() {
    // var A = 0;
    return (A==0);
}).blur();