gpt4 book ai didi

javascript - 确定 Javascript 选择 'change' 事件是由用户还是通过代码执行的?

转载 作者:行者123 更新时间:2023-12-05 03:37:41 24 4
gpt4 key购买 nike

有没有办法确定选择元素的 change 事件是由用户还是通过代码(dom 操作)执行的?

我有一个计时器,它会根据某些条件自动设置一些选择值,然后设置选择颜色的格式以表示“成功”(绿色选择框)。

因为我将表单设置为在触发选择更改事件时触发 ajax 请求,所以它会针对基于计时器的选择更改以及基于用户的选择更改执行此操作。

我只想在基于用户的选择更改时触发该 ajax 事件。

这可能吗?

编辑:

当我输出 e.isTrusted 的值时,它在日志中显示未定义。

这是我的代码:

    $(document).on('change', 'select', function (e) {
e.preventDefault();

console.log(e.isTrusted); // This outputs "Undefined"

if (e.isTrusted) {
save_review();
console.log("Point status changed by user - Saved");
} else {
console.log("Point status changed programmatically - Not Saved");
}
});

最佳答案

根据我在谷歌搜索中找到的解决方案,并在社区提供的上述答案的帮助下,设法解决了这个问题。

当基于计时器的事件触发时,我现在将一个 bool 值 (auto_selected) 传递给它:

$("#pt" + value + " option:nth-child(2)").attr('selected', true).trigger('change', [true]);

在我的事件监听器中,我可以检查该参数的值:

        $(document).on('change', 'select', function (e, auto_selected) {
e.preventDefault();

console.log("Auto-selected: " + auto_selected);

if (typeof auto_selected == 'undefined' || !auto_selected) {
save_review();
console.log("Point status changed by user - Saved");
} else {
console.log("Point status changed programmatically - Not Saved");
}
});

关于javascript - 确定 Javascript 选择 'change' 事件是由用户还是通过代码执行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69211674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com