【问题标题】:Double call on .change() method when there are not breakpoints/debuggers [duplicate]当没有断点/调试器时,双重调用 .change() 方法[重复]
【发布时间】:2019-06-28 10:46:45
【问题描述】:

我有一个.change() 事件用于一些输入和一个 AJAX 调用。当我更改输入的值时,AJAX 方法被调用两次,.change() 事件被触发两次。但是当我放一个“调试器”时;或文件中的断点,它只被调用一次。

我已经记录了事件变量,对于第一次调用,.isTrigger 不存在,但对于第二次调用,它被分配了一个值 3。 我无法追踪第二个呼叫/触发器的来源。有人知道吗?

$('#inputField').change(function(e) {
    console.log(e);
    // first call e.isTrigger is 'undefined'
    // second call e.isTrigger is '3'
});

我为阻止第二次调用所做的事情是:

if ($(this).attr('id') == 'inputField' && typeof(e.isTrigger) != 'undefined') {
    e.preventDefault();
    e.stopPropagation();

   return;
}

但我认为它更多是一种解决方法而不是解决方案。

【问题讨论】:

  • 我看到了这个问题,然后检查了我的代码中是否存在具有相同 ID 的重复输入 - 没有。
  • 请提供一个正确的minimal reproducible example 来显示您的问题。
  • 该字段是一个引导 datimepicker 时间输入。

标签: javascript jquery ajax events dom-events


【解决方案1】:

一定是选择器有问题。对于选择标签,一些插件会创建虚拟选择输入和一个 div,所以试试这个

$('select#inputField').on('change', function(){

}

另外,检查多个 jquery 文件或更新 jquery 版本(如果可行)。

【讨论】:

    猜你喜欢
    • 2016-03-23
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 2016-11-04
    • 1970-01-01
    • 2017-08-31
    • 2021-10-02
    相关资源
    最近更新 更多