2017-11-16 2 views
0

So habe ich ein bisschen eine knifflige Situation hier.Werte von mehreren Checkboxen (Javascript) erhalten, dann verschiedene Werte basierend auf Auswahl zuweisen

Ich habe eine Reihe von Formularen, die Auswahlen haben, die als Arrays gespeichert werden. Ich überprüfe Auswahlen gegen die richtige Antwort am Index, so dass Index und Anzahl der Elemente sehr wichtig sind.

Mein Problem tritt auf, warum versuchen, diese 2 Arrays, die checked und ungeprüfte Werte für HTML-Kontrollkästchen enthalten, zu verketten.

heißt: let comb = checked.concat(unchecked)

let checked = $('input:checkbox:checked').map(function() { 
return this.value;}).get(); 

let unchecked = $('input:checkbox:not(:checked)').map(function() { 
return "100"; }).get(); 

Das Problem mit diesem Code ist es, die Reihenfolge der Auswahl vermasselt, die den Code bricht, die zu bestimmten Indizes gegen die richtige Antwort zu überprüfen.

Was ich brauche, ist es, alle Kontrollkästchen Werte zu erhalten, und weisen Sie den HTML-Wert nur dann, wenn es aktiviert ist, sonst etwas willkürlicher Wert legen (wie Sie return „100“ sehen)

Etwas Ähnliches (nicht syntaktisch korrekt oder runnable):

let checked = $('input:checkbox').map(function() { 
if ('input:checkbox:checked'){ . //if checked 
return this.value;}).get();}else if ('input:checkbox:not(:checked)'){ //if unchecked 
return "100"; }).get(); 
} 

Antwort

1

Sie müssen die ganze bedingte innerhalb der Karte() Callback-

let checked = $('input:checkbox').map(function() { 
    // if checked return the value , if not return "100" 
    return this.checked ? this.value : '100'; 
}).get(); 

oder in lang~~POS=TRUNC Hand mit is() als Sie versuchten zu tun

let checked = $('input:checkbox').map(function() {  
    if($(this).is(':checked')){ 
    return this.value; 
    }else{ 
    return '100'; 
    } 
}).get(); 
+0

Gute Sachen !! Wird in 6 Minuten auswählen. Vielen Dank! – riemannsolve

Verwandte Themen