如何通过1次实时点击调用多个功能?

时间:2012-08-21 08:21:35

标签: jquery

我有这样的代码:

$("button[value^='SAVEALL']").live("click",function(){
    rowCheck(1);
    rowCheck(2);
    columnCheck(A);
    columnCheck(B);
    alert("all function passed");
});

function rowCheck(x){
        if (x>10){
              return false;
        }
}

function columnCheck(a){
        if (a=="A"){
              return false;
        }
}

上面的代码,它只运行第一个函数,然后直接提交表单。 如何确保它运行所有函数并在表单返回true后提交表单。

3 个答案:

答案 0 :(得分:1)

首先,你需要你的函数来返回true或false 喜欢

function rowCheck(x){
    if (x>10){
          return false;
    }
    return true;
}

function columnCheck(a){
    if (a=="A"){
          return false;
    }
    return true;
}

然后更改您的代码以点击

$("button[value^='SAVEALL']").live("click", function(){
    if(rowCheck(1) && rowCheck(2) && columnCheck(A) && columnCheck(B))
    {
        return true;
    }
    return false;
        //alert("all function pass");
});

答案 1 :(得分:0)

...试

$("button[value^='SAVEALL']").live("click",function(e){
    e.preventDefault();
    rowCheck(1);
    rowCheck(2);
    columnCheck(A);
    columnCheck(B);
    alert("all function pass");
});

答案 2 :(得分:0)

您没有正确使用该活动。这就是我要做的事情:

$("button[value^='SAVEALL']").live("click",function(event){
    if( rowCheck(1) || rowCheck(2) || columnCheck(A) || columnCheck(B) ) {
        event.preventDefault();
    }
});

function rowCheck(x){
        return (x>10);
}

function columnCheck(a){
        return (a=="A");
}

主要变化:

  • 为了代码可读性,我改变了返回值的含义。您正在使用如此多的布尔反转,代码变得不清楚。如果必须停止事件,则函数将返回true,而不是相反。
  • 而不是返回false,这是一段难以理解的代码,只需使用event.preventDefault();即可。更清洁,更可读。请注意,我必须将function() {更改为function(event) { !!点击事件由浏览器传递,阻止它发生比使用返回false的过时技术要好得多。
  • 从不使用if(some_boolean) { return true; }等代码块。这是一个坏习惯,并没有丝毫增加可读性。

这是因为:

if ( name=="John" && lastname =="Smith") {
    return true;
} else {
    return false;
}

始终可以改写为:

return ( name=="John" && lastname =="Smith");