gpt4 book ai didi

javascript - jQuery,仅当用户自己更改输入时更改事件

转载 作者:可可西里 更新时间:2023-11-01 01:27:14 24 4
gpt4 key购买 nike

我们可以检测用户是否更改了某些内容:

$('#item').change(function() { 
alert('changed!');
});

遗憾的是,有时我需要人为地调用它:$('#item').change() 但在这种情况下它也被视为“已更改”。有没有办法区分用户事件和手动事件?

最佳答案

从 jQuery 事件处理程序返回的第一个参数是事件对象:

$('#item').change(function(e) { 
console.log(e); // The event object
});

我通常区分用户触发事件和代码触发事件的方式是,用户触发事件附加了一个 originalEvent 属性。我不知道这是否是最好的方法,但我会这样做:

$('#item').change(function(e) { 
if (e.originalEvent) {
// user-triggered event
}
else {
// code-triggered event
}
});

例子

在下面的示例中输入 input 元素,然后取消对该元素的聚焦。您会收到一条提示,内容为 “user-triggered”。单击按钮调用代码触发的更改。您会收到一条提示,内容为 “code-triggered”

$('#item').change(function(e) { 
if (e.originalEvent) {
alert('user-triggered')
}
else {
alert('code-triggered')
}
});

$('button').on('click', function() {
$('#item').change();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type=text id=item />
<button>Click here to trigger change</button>

关于javascript - jQuery,仅当用户自己更改输入时更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35598096/

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