Javascript函数,当jQuery单击事件发生时返回true,否则返回false

时间:2013-08-29 23:27:45

标签: javascript jquery

正如标题所示,当单击类.btnAnswer的按钮时,我试图让我的setAnswer()函数返回true,否则返回false。然后我将返回的值传递给showHideAnswer()函数并将该值用于逻辑。这似乎相当容易,我不知道我哪里出错了。我在.NET中编写了很多代码,对于使用Javascript函数我仍然很新。我相信这很简单!

//On partial page load    
function pageLoad(sender, args) {
    if (args.get_isPartialLoad()) {
        showHideAnswers(setAnswer());
        alert(setAnswer());
    }
}

//Set answer
function setAnswer() {
    $("input.btnAnswer[type=submit]").click(function (event) {
        //do stuff and return true if clicked
        return true;
    });
}

//Show hide stuff
function showHideAnswers(flag) {
if(flag){

//do stuff

}

}

提前致谢!

P.S。页面加载中的警报始终显示未定义。

2 个答案:

答案 0 :(得分:1)

您的函数setAnswer()不返回任何内容。 jQuery .click()是一个事件监听器,这意味着它不是你调用的东西。设置后,在单击元素时调用它。

简单的工作示例是,设置一个全局标志变量,并让.click()监听器在点击时更改它:

var flag=false;
$( "#buttonID" ).click(function() {
  flag=true;
});

//On partial page load    
function pageLoad(sender, args) {
  if (args.get_isPartialLoad()) {
    showHideAnswers();
    alert(flag);
  }
}

//Show hide stuff
function showHideAnswers() {
  if(flag){
    //do stuff. flag is global, no need to define in function or pass to it
  }
}

答案 1 :(得分:0)

您没有获得返回值,因为它超出了范围,您可以在事件触发时简单地调用该函数。 iff你检查的是,如果单击按钮,你可以确定该功能只会在点击时触发:

function setAnswer() {
    $("input.btnAnswer[type=submit]").click(function (event) {
        //do stuff and return true if clicked
        showHideAnswers(true)
    });