只有在单击按钮时才调用一次方法(至少一次)

问题描述 投票:0回答:3

如果任何其他按钮至少被点击一次,我想只调用一次loadNext()方法。

我已经检查过:Calling a Method Once

例如,我正在制作一个测验应用程序,每个问题类型都有问题和一些选项。用户将选择一个选项并按下下一个按钮以加载下一个问题(带选项),(这些是在数组中预定义的)。即使多次单击选项,也不应多次调用loadNext()(为了防止这种情况,我避免在这些选项(按钮)的onclick方法中调用loadNext(),如果没有选择任何选项也不会加载,

我的想法类似于预先定义isClickedfalse,并反转这些选项的onclick方法,但这不起作用。

到目前为止,我所做的一切:

question_and_options

var optButtons = $(".opt button");
var isClicked = false;
optButtons.click(function () {
        isClicked = true;
        console.log("clicked on opt buttons: " + this.id);
        console.log("Current button is: " + this.id + " set as active");
       //other stuffs
    });

//some other stuffs


if (isClicked) {
console.log("Clicked once!");
        //other stuffs
        loadNext();
    } else {
        alert("Please select an option");
//browser is alerting very first time after opening `index.html` file 
// and Next button click isn't working after that
        }

任何指示将不胜感激,提前感谢!我是JS的新手。

javascript jquery buttonclick
3个回答
1
投票

假设你的下一个按钮有一个id="next",那怎么样

$("#next").on('click',function(){
    if(isClicked){
        loadNext();
        // Set isClicked to false to reset mechanism
        isClicked = false;
    }
});

这会是你想要的吗?我这样理解


0
投票

单击选项按钮时,您正在登录到控制台,这是正常的,但是在下一个按钮的onClick侦听器中,检查是否单击了一个选项..并且您可以在全局范围内创建一个变量来检查单击下一个按钮多少次,代码片段是

//function called on clicking the next button
function abcd(){

  counter++;
  if(counter!=-1){
   return;
  }
  else{
    //call the loadnext()
  }

}

0
投票

我想你有单选按钮的答案。您可以尝试“单选按钮”选项。网上有足够多的参考资料。如果这不符合您的要求,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.