2016-04-13 10 views
1

ich eine Checkbox wie dieses ...Wie ändere ich die Variable, wenn das Kontrollkästchen aktiviert ist oder nicht?

<input type="checkbox" id="something" name="something" value="25" data-val="25" checked="checked" class="option"> 
    <label for="something">Something</label> 

Ich möchte Javascript/jQuery-Code haben, wo jedes Mal, wenn Kontrollkästchen aktiviert ist oder nicht markiert, es sieht aus, um zu sehen, ob seine geprüft und weist einen Wert von 25, wenn Es ist markiert, oder 0, wenn es nicht markiert ist. Wenn ich jedoch durch Aktivieren/Deaktivieren des Tests versuche, spuckt es nur aus. 25. Warum ändert es sich nicht zu 0, wenn ich das Häkchen aufhebe? Irgendwelche Ideen, was ich falsch mache?

$(document).ready(function() { 
    $('.option').on('change', function() { 
     if ($('#something').attr('checked')) { 
      var something = 25; 
     } else { 
      var something = 0; 
     } 
     console.log(something); 
    }); 
}); 
+1

Mögliche Duplikat [Check Checkbox aktiviert Eigenschaft] (http://stackoverflow.com/questions/901712/check-checkbox-checked-property) – Robusto

Antwort

1

.attr() Methode gibt string"geprüft"-Anfangszustand der Checkbox, die nicht nicht ändert.
Es wird immer als true ausgewertet und if condition wird immer ausgeführt.

abzurufen, und DOM Eigenschaften wie die Option aktiviert ist, ausgewählt, oder deaktivierten Zustand von Formelementen, verwenden, um die .prop() Methode zu ändern.

So .prop() verwenden Sie true/falseWerte zu bekommen:

$('.option').on('change', function() { 
    var something; 
    if ($(this).prop('checked')) { 
     something=25; 
     } 
    else { 
     something = 0; 
     } 
     console.log(something); 
}); 

Oder Sie können Check wenn die checkbox geprüft wird mit .is() Methode, die boolean zurückgibt.

$('.option').on('change', function() { 
     var something; 
     if ($(this).is(':checked')) { 
      something=25; 
     } else { 
      something = 0; 
     } 
     console.log(something); 
}); 
+1

Awesome, die es tat. Lerne jeden Tag etwas Neues. Vielen Dank! – user3304303

Verwandte Themen