2017-01-10 3 views
1

Ich habe ein funktionierendes Skript, aber ich weiß, es gibt eine Möglichkeit, dies mit einer if-Anweisung zu bereinigen, aber ich kann es nie funktionieren.Wie überprüft man, ob Eingabewert gleich einem der folgenden ist, dann aktivieren Sie das Kontrollkästchen

Ich versuche einen Weg zu finden, um zu suchen, wenn der Wert gleich 2, 3 oder 5 ist. Wenn ja, dann setze das Häkchen. Hier

ist das Skript:

var num = 5; 
$('input:checkbox[value="' + num + '"]').attr('checked', true); 
var num = 2; 
$('input:checkbox[value="' + num + '"]').attr('checked', true); 
var num = 3; 
$('input:checkbox[value="' + num + '"]').attr('checked', true); 

HTML:

<div id="select"> 
<input type="checkbox" name="my_check[]" value="1"> 
<input type="checkbox" name="my_check[]" value="2"> 
<input type="checkbox" name="my_check[]" value="3"> 
<input type="checkbox" name="my_check[]" value="4"> 
<input type="checkbox" name="my_check[]" value="5"> 
</div> 

This fiddle shows it working

Antwort

2

Sie Karte für mehrere Werte verwenden kann. Schieben Sie den Wert in ein einzelnes Array und verwenden Sie die Karte auf dem Arry, um den Wert zu überprüfen.

[5,2,3].map(function(num){ 
    $('input:checkbox[value="' + num + '"]').prop('checked', true); 
}) 

Arbeits Fiddle https://jsfiddle.net/d393savL/1/

PS: Changed die Antwort verwendet prop wie @ Mike Dank vorgeschlagen :)

+3

Von [der Dokumentation attr] (http://api.jquery.com/attr): *** Zum Abrufen und DOM-Eigenschaften zu ändern, wie die 'checked',' selected' oder 'disabled' Zustand von Formularelementen, verwenden Sie die [' .prop() '] (http://api.jquery.com/prop/) Methode. *** –

0

Schleife durch alle Eingangskontrollkästchen und prüfen Sie den Wert Attribut

$(function(){ 
    $('input[type="checkbox"]').each(function(index, item){ 
    switch($(item).attr('value')) { 
     case '2': 
     case '3': 
     case '5': $(item).prop('checked', true); 
     break; 

    } 

    }) 
}) 

JSFIDDLE

2

Mit .forEach():

var values = [2, 3, 5]; 
values.forEach(function(value) { 
    $('input:checkbox[value="' + value + '"]').prop('checked', true); 
}); 

Dies würde "Schleife" durch Ihre values Variable, versucht jede checkbox mit den passenden Werte zu überprüfen.

+0

' forEach' ist definitiv eine bessere Idee als mit 'map' für Nebenwirkungen. –

+0

@MikeMcCaughan was macht forEach besser als Karte? Ich habe noch nie zuvor benutzt. – cgrouge

+0

'map' soll ein Array erstellen und die Werte einem anderen" zuordnen ", wobei ein Array mit diesen verschiedenen Werten zurückgegeben wird. Wenn Sie also sehen, dass "map" ohne den Rückgabewert verwendet wird, wird es wahrscheinlich nicht korrekt verwendet. 'forEach' soll ein Array aufnehmen und darüber ohne Rückgabewert durchlaufen. In diesem Fall ist Iteration, was wir wollen, nicht Mapping, also ist es besser. Das ist nur meine Meinung, und "forEach" Unterstützung in älteren Browsern fehlt. –

0

Ähnlich wie die anderen, aber unter Ausnutzung der Selektoren. Sie können mehrere Selektoren in einer einzigen Zeichenkette haben, sodass jQuery einfacher die Schleifen ausführen kann.

$(function() { 
 
    $(':checkbox[value="2"],:checkbox[value="3"],:checkbox[value="5"]').prop('checked', true); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="select"> 
 
<input type="checkbox" name="my_check[]" value="1"> 
 
<input type="checkbox" name="my_check[]" value="2"> 
 
<input type="checkbox" name="my_check[]" value="3"> 
 
<input type="checkbox" name="my_check[]" value="4"> 
 
<input type="checkbox" name="my_check[]" value="5"> 
 
</div>

Verwandte Themen