2016-05-03 8 views
0

いくつかのフィールドに有効な入力があることを確認してから、続行します。フォーム提出の前にいくつかのフィールドを検証するだけです。検証は正しく機能しており、必要に応じてエラーを表示しています。しかし、すべてのフィールドが有効な場合、呼び出し元の関数には戻りません。検証関数の後に「true」を返す

function validateTableRow() { 
    $('input[name="addPid"]').valid(); 
    $('input[name="addName"]').valid(); 
    $('input[name="addAddress"]').valid(); 
    $('input[name="addCity"]').valid(); 
    $('select[name="addState"]').valid(); 
    $('input[name="addZip"]').valid(); 
} 

$('.button').click(function() { 
    if(validateTableRow()){ 
     //Do something 
    } 
}); 
} 
+0

あなたは何も返さないので... – giorgio

答えて

2

validメソッドはブール値を返すことを想定して)それを作ります。しかし、falseのJSに何も返されていないので、あなたがifの中に入れたものは実行されません。

あなたはあなたが望むものに応じtrueまたはfalseを返すために機能を変更することができます。

function validateTableRow() { 
    return $('input[name="addPid"]').valid() && 
    $('input[name="addName"]').valid() && 
    $('input[name="addAddress"]').valid() && 
    $('input[name="addCity"]').valid() && 
    $('select[name="addState"]').valid() && 
    $('input[name="addZip"]').valid(); 
} 

$('.button').click(function() { 
    if(validateTableRow()){ 
    //Do something 
    } 
}); 
} 

[EDIT] trueまたはfalseを返す前にそれらをすべて確認するには、このようなことができます:

function validateTableRow() { 

    $('input[name="addPid"]').valid(); 
    $('input[name="addName"]').valid(); 
    $('input[name="addAddress"]').valid(); 
    $('input[name="addCity"]').valid(); 
    $('select[name="addState"]').valid(); 
    $('input[name="addZip"]').valid(); 

    return $('input[name="addPid"]').valid() && 
     $('input[name="addName"]').valid() && 
     $('input[name="addAddress"]').valid() && 
     $('input[name="addCity"]').valid() && 
     $('select[name="addState"]').valid() && 
     $('input[name="addZip"]').valid(); 
    } 

    $('.button').click(function() { 
     if(validateTableRow()){ 
     //Do something 
     } 
    }); 
    } 
+0

これはちょっとした作品です。空白のフォームをクリックすると、最初のフィールドだけがエラーメッセージを表示します。そのフィールドに記入してからをクリックすると、2番目の空白のフィールドにエラーが表示されます。その後、すべてのフィールドが有効になるまで、trueを返して処理を続行します。しかし、唯一の検証エラーを返す動作は奇妙に見えますか? – PixelPaul

+0

はい、正しく、演算子&&は何かが偽であるときにfalseを返しますが、次に何かを「読む」ことはありません。私はあなたがstatement1 && statement2を持っていて、statement1がfalseならstaement2を実行しないと説明します。とにかく声明全体が偽りになるからです。時間を節約する。したがって、最初のものが無効な場合は、次のものが有効かどうかをチェックしません。 –

+0

ありがとうございます。 trueかfalseを返す前に6つの入力をすべてチェックする方法がありますか? – PixelPaul

1

あなたのメソッドから何も返されていません。

はあなたの機能validateTableRow()//Do somethingを行うためにtrueを返すことがある

function validateTableRow() { 
    return $('input[name="addPid"]').valid() && $('input[name="addName"]').valid() && $('input[name="addAddress"]').valid() && $('input[name="addCity"]').valid() && $('select[name="addState"]').valid() && $('input[name="addZip"]').valid(); 
} 

$('.button').click(function() { 
    if(validateTableRow()){ 
     //Do something 
    } 
}); 
} 
関連する問題