具有用于许多不同单选按钮的相同单击处理程序

时间:2019-11-07 21:09:41

标签: javascript jquery

我的网站上有很多单选按钮。每个都有相同的点击处理程序。在处理程序内部,我进行了ajax调用和一些其他的逻辑,这可能需要一些时间。正如我所说的,它是同一个处理程序。当某人单击一个单选按钮时实际发生的情况,因此将执行处理程序中的代码,但是很快他按下另一个单选按钮,则首先单击的单选按钮的处理程序代码不会完全执行。因此,现在再次发生单击单选事件,并且此代码再次开始执行。如何防止在处理程序代码完全执行之前单击另一个单选按钮。

1 个答案:

答案 0 :(得分:0)

如果函数在执行期间,则可以使用包含true的外部变量

var execution=false;

function action(radio) {
  console.log('try run');

  if(execution) { radio.checked = false; return };
  execution=true;
  
  console.log('execution starts: 5s');  
  setTimeout(()=> {
    console.log('execution ends');    
    execution=false;
  },5000)  
}
<input type="radio" onclick="action(this)">A
<input type="radio" onclick="action(this)">B
<input type="radio" onclick="action(this)">C