0

我有三个这样的连锁事件:

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

我想要的是:

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

我希望仅在满足条件时才执行模糊事件。

我尝试检查条件是否在模糊事件中得到满足,但问题是它执行了基本上什么也没做的模糊功能,但我仍然遇到一个问题,我必须单击两次才能从另一个事件中获得我想要的功能(注意:不是来自模糊事件的功能)。

我的主要问题:我单击一个显示日期选择器的文本框,当我选择一个日期时,我的模糊事件执行,因为我离开文本框并从日期选择器中选择一个日期。我的模糊事件有一个执行的回发,但问题是当我从我的日期选择器中选择日期时我不希望它执行。注意:当我选择一个日期时,我的 vae 代码可以让我从我选择的日期开始一周,所以这不是你默认的“datepicker”功能,这与问题无关,但我认为最好提及它。

如果这是可能的,我非常感谢一个答案。我any1想到了以下解决方案,我只想说我尝试过但没有奏效:内部模糊事件:

return false
return true 
4

2 回答 2

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() }); });
                    }
            })
于 2013-10-21T07:51:13.530 回答
0

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

$('#Id').click().focus().filter(function() {
    // var A = 0;
    return (A==0);
}).blur();
于 2013-10-18T15:01:48.110 回答