2017-04-10 14 views
-2

Ich muss das Kontrollkästchen validieren.Javascript + jquery Checkbox Validierung?

if($("#update_user_modal #room1").attr('checked', false)) room1Val = 0; 

Das funktioniert gut. Aber ich muss prüfen, ob es auch nicht überprüft wird. Die else-Methode wird nicht funktionieren.

if($("#update_user_modal #room1").attr('checked', true)) room1Val = 1; 

Dies funktioniert auch.

ABER! Wenn ich beide wie folgt verwenden:

if ($("#update_user_modal #room1").attr('checked', false)) room1Val = 0; 

    if($("#update_user_modal #room1").attr('checked', true)) room1Val = 1; 

funktioniert es manchmal einfach.

Ich versuchte mit .prop auch. Was mache ich falsch?

Antwort

0

Sie sind nicht lesen das Attribut Wert, aber schreiben es. Nicht das zweite Argument attr verwenden - nur ein verwenden:

room1Val = +$("#update_user_modal #room1").attr('checked')) 

Dadurch werden die beiden Fälle in einem Rutsch tun, da es einen Booleschen Wert zurück. Die + macht, dass eine 0 oder 1

Zweitens ist es besser, prop über attr für diesen Fall zu verwenden:

room1Val = +$("#update_user_modal #room1").prop('checked')) 
+0

Könnte der downvoter erklären, was das Problem ist? – trincot

+1

Ihre Antwort ist besser als ihre;) –

+0

danke! Lief wie am Schnürchen.. –

1

JQuery: Verwenden Sie .is(':checked')

if ($("#update_user_modal #room1").is(':checked') room1Val = 0; 
else room1Val = 1; 

Javascript: Verwenden Sie .checked Eigenschaft eines Kontrollkästchens.

if document.getElementById('chkboxName').checked room1Val = 0; 
else room1Val = 1; 
1

Versuchen Sie, is(":checked") Option zu verwenden.


Ihr Code würde wie folgt aussehen:

if (!$("#update_user_modal #room1").is(":checked")) room1Val = 0; 

if($("#update_user_modal #room1").is(":checked")) room1Val = 1; 



prüfen documentation für weitere Informationen.

-1

Sie sollten es tun wie unten:

if ($("#update_user_modal #room1").prop('checked')) { 
    room1Val = 1; 
} else { 
    room1Val = 0; 
} 
1

Laut der W3C Formen Spezifikation, das Attribut checked ist ein boolean-Attribut, das bedeutet, dass die entsprechende Eigenschaft wahr ist, wenn das Attribut vorhanden ist all - auch wenn zB das Attribut keinen Wert hat oder auf einen leeren String-Wert oder gar "false" gesetzt ist. Dies ist wahr aller booleschen Attribute.

Nichtsdestoweniger ist das wichtigste Konzept, das über das geprüfte -Attribut zu erinnern ist, dass es der geprüften Eigenschaft nicht entspricht. Das Attribut entspricht tatsächlich der defaultChecked-Eigenschaft, und sollte nur zum Festlegen des Anfangswerts des Kontrollkästchens verwendet werden.Der überprüfte Attributwert ändert sich nicht mit dem Status des Kontrollkästchens , während die checked-Eigenschaft dies tut. Daher ist die Cross-Browser-kompatible Art und Weise zu bestimmen, ob ein Kontrollkästchen aktiviert ist die Eigenschaft zu verwenden ist:

if (elem.checked) 
if ($(elem).prop("checked")) 
if ($(elem).is(":checked")) 

Source