2016-11-20 2 views
0

if else文を使用する方法が混乱している状況があります。これは検証に関連しています。2つのオプションの検証のための演算子

私の下のコードは、最初の2フィールドで機能しました。

if(!name || name=='' && 
     !age || age=='' 
    ){ 
     console.log('failed to validate'); 
     return false; 
    } 

私の第3フィールドはトリッキーなものです。それらはskippedまたはpassedです。フィールドはskippedまたはpassedのいずれかになります。彼らはどのように検証されるのを保証するのですか?私はできません!skipped || skipped == '' && !passed || passed == ''これは確かに失敗します。

+0

'&&'は '||'よりも厳密にバインドするので、適切な評価順序を強制するために明示的なカッコを入れる必要があるかもしれません。 – Pointy

+0

ご了承ください。検証で –

+0

を表示するには、それぞれのフィールドが表示される条件 –

答えて

0

あなたはこのような何かを試みることができる:

if(!name || name=='' 
    && !age || age=='' 
    && ((!skipped || skipped == '') 
     || (!passed || passed == '')) 
){ 
    console.log('failed to validate'); 
    return false; 
} 
0

使用関数は、それぞれの入力フィールドを表示するかどうかを決定すると、検証:

function isPassedNeeded(){ 
    return someBool; 
} 
function isSkippedNeeded(){ 
    return someOtherBool; 
} 
検証が

if(isPassedNeeded() && (!passed || passed == ''){ 
    // fail 
} 
// same for the other field... 
ようになります。

しかし、この方法はかなり動的ではありません。いくつかの動的アトリビュート(例えば、inputclassを使用)を考えたり、フィールドを確認する前にフィールドの表示を確認したりすることができます。

関連する問題