985 Stimmen

Können HTML-Kontrollkästchen auf "schreibgeschützt" gesetzt werden?

Ich dachte, sie könnten es sein, aber da ich mein Geld nicht auf den Kopf haue (sozusagen), scheint das Setzen des Attributs readonly nichts zu bewirken.

Ich würde lieber nicht "Disabled" verwenden, da ich möchte, dass die angekreuzten Kästchen zusammen mit dem Rest des Formulars übermittelt werden, ich möchte nur nicht, dass der Kunde sie unter bestimmten Umständen ändern kann.

51 Stimmen

Ein (böswilliger) Client kann den Wert eines Kontrollkästchens jederzeit ändern (oder beliebige Anfragen senden). Stellen Sie immer sicher, dass Sie eine ordnungsgemäße serverseitige Validierung durchführen!

6 Stimmen

@knittl Aber ein normaler Besucher hat keinen (bösartigen) Client. Und ein normaler Vistor wollte keine Informationen ändern (Das ist der Sinn von readonly )

0 Stimmen

@ChristianGollhardt: aber dann brauchen Sie den Wert des Kontrollkästchens nicht mit der Anfrage zu senden, da es immer der Anfangswert sein sollte.

709voto

Yanni Punkte 2497

Können Sie dies verwenden:

<input type="checkbox" onclick="return false;"/>

Dies funktioniert, weil die Rückgabe von false aus dem Click-Ereignis die Fortsetzung der Ausführungskette stoppt.

463voto

ConroyP Punkte 39832

READONLY funktioniert nicht bei Kontrollkästchen, da es Sie daran hindert, den Wert eines Feldes zu bearbeiten Wert aber mit einem Kontrollkästchen bearbeiten Sie tatsächlich die estado (ein || aus)

De faqs.org :

Es ist wichtig zu verstehen, dass READONLY den Benutzer lediglich daran hindert, den Wert des Feldes zu ändern, nicht aber daran, mit dem Feld zu interagieren. Bei Kontrollkästchen zum Beispiel können Sie sie ein- oder ausschalten (und damit den Status CHECKED setzen), aber Sie ändern nicht den Wert des Feldes.

Wenn Sie nicht möchten, dass disabled aber dennoch den Wert übermitteln möchten, wie wäre es dann, wenn Sie den Wert als verborgenes Feld übermitteln und dem Benutzer nur seinen Inhalt ausgeben, wenn er die Bearbeitungskriterien nicht erfüllt? z. B.

// user allowed change
if($user_allowed_edit)
{
    echo '<input type="checkbox" name="my_check"> Check value';
}
else
{
    // Not allowed change - submit value..
    echo '<input type="hidden" name="my_check" value="1" />';
    // .. and show user the value being submitted
    echo '<input type="checkbox" disabled readonly> Check value';
}

406voto

powtac Punkte 39079

Dieses Kontrollkästchen können Sie nicht ändern:

<input type="checkbox" disabled="disabled" checked="checked">

Einfach hinzufügen disabled="disabled" als ein Attribut.

Bearbeiten, um auf die Kommentare einzugehen:

Wenn Sie möchten, dass die Daten zurückgeschickt werden, dann ist eine einfache Lösung, den gleichen Namen auf eine versteckte Eingabe anzuwenden:

<input name="myvalue" type="checkbox" disabled="disabled" checked="checked"/>
<input name="myvalue" type="hidden" value="true"/>

Wenn das Kontrollkästchen auf "deaktiviert" gesetzt ist, dient es nur der visuellen Darstellung der Daten, anstatt tatsächlich mit den Daten "verknüpft" zu sein. In der Rückmeldung wird der Wert der verborgenen Eingabe gesendet, wenn das Kontrollkästchen deaktiviert ist.

74voto

Grant Wagner Punkte 24137
<input type="checkbox" onclick="this.checked=!this.checked;">

Sie MÜSSEN jedoch unbedingt die Daten auf dem Server überprüfen, um sicherzustellen, dass sie nicht geändert wurden.

58voto

summsel Punkte 68

Eine weitere "einfache Lösung":

<!-- field that holds the data -->
<input type="hidden" name="my_name" value="1" /> 
<!-- visual dummy for the user -->
<input type="checkbox" name="my_name_visual_dummy" value="1" checked="checked" disabled="disabled" />

disabled="deaktiviert" / disabled=true

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X