gpt4 book ai didi

javascript - 防止在 javascript/jQuery 中执行正在运行的事件

转载 作者:行者123 更新时间:2023-11-28 08:13:36 25 4
gpt4 key购买 nike

我的下拉列表如下。

<select id="mySelect">
<option value="one">one</option>
<option value="two">Two</option>
</select>

我有一个更改事件处理程序,当用户选择Two时会调用该处理程序,如下所示。

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

if(//Two is selected){
display_message("Processing....<a id='manual'>Try Manually</a>");
//an ajax call which gets the content from server
//if successful display another drop down using the content retrieved from server
//else
display_message("Processing failed...<a id='manual'>Try Manually</a>");
}else{
$('div#content').html("<input type='text' name='name' />");
}

});

此外,我还有另一个点击事件处理程序,当用户单击手动尝试时,该处理程序会被调用,如下所示。

$('#manual').on('click',function(){     
$('div#content').html("<input type='text' name='name' />");
});

因此,当用户选择 Two 时,会显示一条消息 - 'Processing...TryManually',然后在成功的 ajax 调用后显示一个下拉菜单。

If ajax call took long time then message stays on screen. During this time if user clicks on Try Manually, then before displaying text box I should cancel the running 'change' event handler.

如何实现这一目标?

最佳答案

您可以有一个全局变量,以便您可以取消屏幕上的事件,如下所示:

var disableEvent = false;

$('select#mySelect').on('change',function(){
if (disableEvent) return false;

if(//Two is selected){
display_message("Processing....<a id='manual'>Try Manually</a>");

disableEvent = true;

//an ajax call which gets the content from server
//if successful display another drop down using the content retrieved from server
//else
display_message("Processing failed...<a id='manual'>Try Manually</a>");

disableEvent = false;
}else{
$('div#content').html("<input type='text' name='name' />");
}

});

关于javascript - 防止在 javascript/jQuery 中执行正在运行的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23867401/

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