2016-11-20 3 views
0

Ich habe eine Situation, in der ich verwirrt bin, wenn sonst Anweisung zu verwenden. Es hängt mit der Validierung zusammen.Operator für die Validierung für 2 Optionen

Mein unten Code funktionierte für das erste Feld 2.

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

mein 3. Feld ist das knifflige. Sie sind skipped oder passed. Das Feld wird entweder skipped oder passed angezeigt. Wie kann ich sicherstellen, dass sie validiert wurden? Ich kann !skipped || skipped == '' && !passed || passed == '' nicht tun dies wird sicherlich fehlgeschlagen.

+0

Verstehen Sie, dass '&&' fester bindet als '||', daher müssen Sie möglicherweise explizite Klammern einfügen, um die richtige Reihenfolge der Auswertung zu gewährleisten. – Pointy

+0

bitte erarbeiten. –

+0

Geben Sie in Ihrer Validierung die Bedingung ein, die dazu führt, dass die entsprechenden Felder angezeigt werden oder nicht –

Antwort

0

Man könnte so etwas wie dies versucht:

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

Funktionen verwenden, wenn die Entscheidung, ob die jeweiligen Eingabefelder angezeigt werden und bei der Validierung:

function isPassedNeeded(){ 
    return someBool; 
} 
function isSkippedNeeded(){ 
    return someOtherBool; 
} 

Validierung wie

if(isPassedNeeded() && (!passed || passed == ''){ 
    // fail 
} 
// same for the other field... 
aussehen könnte

Allerdings ist dieser Weg ziemlich nicht-dynamisch. Man könnte denken über einige dynamische Attribute (zum Beispiel unter Verwendung der input ‚s class) oder für die Sichtbarkeit von Feldern überprüfen, bevor sie zu validieren.