0

私はこのようなコードを持っています:

$("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

4

3 に答える 3

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");
});
于 2012-08-21T08:27:14.767 に答える
0

試す...

$("button[value^='SAVEALL']").live("click",function(e){
    e.preventDefault();
    rowCheck(1);
    rowCheck(2);
    columnCheck(A);
    columnCheck(B);
    alert("all function pass");
});
于 2012-08-21T08:22:48.640 に答える
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");
于 2012-08-21T08:41:39.847 に答える