如何在jquery中检查是否触发了change事件

时间:2010-06-21 19:29:13

标签: jquery

如果检查我的更改事件是否被触发,如果我需要发送真的,如果不是我需要发送假..

$("#selectid").change(function(){
});

我需要检查此事件是否被触发..?

感谢

4 个答案:

答案 0 :(得分:1)

var didF=false;

$("#selectid").change(function(){
   didF=true;
});

...

if (didF) {
   ...
}

答案 1 :(得分:1)

您在问题中包含的代码行将函数(回调或处理程序)绑定到ID为change的元素的selectid事件。你想确定你的回叫是否会被激活?

如果是这种情况,有多种选择。如果您正在使用Firebug或其他调试器,则可以在回调中的某处放置断点。您还可以使用debugger;关键字将断点“硬编码”到特定位置,如下所示:

$("#selectid").change(function(){
    debugger;
});

查看回调触发时最基本的方法是使用alert代替调试器语句:

$("#selectid").change(function(){
    alert("It fired!";
});

我不确定你对“发送真或假”的意思。

答案 2 :(得分:1)

我认为这与您的其他问题有关。我在那个问题上更新了我的答案,因为你在那里问过它,但我想我也会在这里发布答案。

跟踪修改哪些表单元素的一种方法是.data()

var array;

$("#fieldset").change(function(event) {
    $(event.target).data('changed',true);
});

$("form").submit(function() {
    array = $(this).find("input, select,textarea").map(function() {
        var $th = $(this);
        if( $th.data('changed') ) return $(this).val();
    }).get();

    alert(array);
    return false;
});​

答案 3 :(得分:1)

如果事件已从处理程序外部触发,则无法可靠检查

我假设您正在寻找以下内容:

var changed = false;

$("#selectid").change(function(){
    changed = true;
});

if (changed) {
    doSomething();
} else {
    doSomethingElse();
}

但是,除非用户非常快(并且浏览器速度仍然不快),if将在{{{}>之前评估 long 1}}处理函数实际上是被调用的。因此,change将被称为99.99999999999999%的时间。

但是,您可以将相同的人为输入延迟纳入您的方法。而不是对变更进行后期测试,从一开始就假设没有发生任何变化。然后,在doSomethingElse处理程序中包含您的true脚本。但是,关键是处理处理程序中更改事件的所有依赖项。

change

但是,我害怕,不知道你需要完成什么,我不能再具体了。