2016-06-23 6 views
0

おはようございます、これは私の最初の投稿なので簡単に行ってください。イントラネットサイトに簡単なデータ入力フォームがあり、2つのフィールドでJavaScriptを使用して「if this then that」シナリオを検証しようとしています。シンプルなJavascriptが正しく実行されている問題

ブロック1とブロック2と呼ばれる以下のコードは、それぞれ個別に動作します。つまり、JavaScriptのブロック1のみを適切な場所に置いておくと、フィールドを正確に検証する必要があります。コードのブロック2だけを残しておけば、それは正確に想定されているフィールドを検証します。コードのブロック1とブロック2の両方をそのまま残しておくと、ブロック1は必要なフィールドを検証し、ブロック2は単にスキップされます。

これは非常に簡単なはずですが、私は何が欠けているのか分かりません。事前にお手伝いをしていただきありがとうございます。個々に各ブロックが正しく動作します。

(ブロック1)

// checks to ensure that Payroll Deduction field is populated correctly 
    if((document.getElementById('yespayroll').checked) && (document.order.payamount.value=="")) 
    { 
     alert("Please enter the Amount for payroll deduction."); 
     document.order.payamount.focus(); 
     return false; 
    } 

    else if ((document.getElementById('nopayroll').checked) && (document.order.payamount.value!=="")) 
    { 
     alert("Please remove the Payroll deduction amount"); 
     document.order.payamount.focus(); 
     return false; 
    } 

    { 
     return true; 

    }  

(2ブロック)

// checks to ensure that both the Gift Card and Amount are entered or that both are set to none 
    if((document.order.giftcard.value!=="None") && (document.order.amount.value=="None")) 
    { 
     alert("Please enter the AMOUNT for your selected Gift Card."); 
     document.order.amount.focus(); 
     return false; 
    } 

    else if((document.order.giftcard.value=="None") && (document.order.amount.value!=="None")) 
    { 
     alert("Please select a Gift Card for the selected Amount."); 
     return false; 
    } 

    else 

    { 
     return true; 
    }  
+0

両方のコードブロックが同じ 'if'に含まれていますか? –

+0

こんにちは。 "return"ステートメントは "end of function"を意味します。最初の復帰(ブロック1)でコードを残し、ブロック2に達していません。 –

+0

脳全体のおなら。 "trueを返す"を削除する問題の世話をした。ありがとうございます – Robert

答えて

0

私はブロック1がfalseを返しているからだと思います。

はエラーを追跡し、機能の下部にfalseを返すためにフラグを設定してみてください:

var has_errors = false; 

// if block1 has errors set has_errors to true 
// if block2 has errors set has_errors to true 

if (has_errors) { 
    return false; 
} 
0

「戻る」の文は、「関数の終わり」を意味します。最初の復帰時(ブロック1)にコードを残し、ブロック2に達していません。これはあなたの問題を解決するための可能な変形です。

var isValid = true; 

// block 1 
if (...) { 
    // alert and code 
    isValid = false; 
} 
// block 2 
if (...) { 
    // alert and code 
    isValid = false; 
} 
return isValid; 
+2

ようこそStackOverflow!あなたのコードの上に少なくとも1つの説明行を入れて、あなたの知的な仕事を保証するか、または適切に引用してください –

+1

私はそれが明らかだと思いました。また、私はすでにこの回答にコメントしましたが、ちょっとしたコード例を追加したいだけです。しかし、あなたは正しいです、ありがとう! –

関連する問題