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.
5 Stimmen
@knittl Sie scheinen den gesamten Sinn von
readonly
! Warum sollte es dann dieses Attribut geben!15 Stimmen
@IzharAazmi:
readonly
ist nur ein clientseitiges Attribut, das einem Browser hilft, eine Website richtig zu rendern und dann die richtige Anfrage daraus zu konstruieren. Der Server kann und sollte nicht wissen, dass diereadonly
Attribut der gerenderten Seite. Es muss davon ausgehen, dass die Anfrage von irgendwoher kam (und möglicherweise mit böswilligen Absichten); verlassen Sie sich niemals auf vom Benutzer bereitgestellte Eingaben. Warum aber den Wert eines Kontrollkästchens senden, den Sie in einer Anfrage nicht bearbeiten können (wenn Sie den Wert vor dem Rendern festlegen, kennen Sie ihn bereits, wenn die Anfrage übermittelt wird, so dass es nicht nötig ist, ihn in der Anfrage zu übermitteln)?6 Stimmen
@knittl Ich stimme zu! Aber Sie sehen
readonly
Attribut aus irgendeinem Grund dort vorhanden ist. Es hat sicherlich nichts mit der serverseitigen Implementierung zu tun. Aber es ist da, um dem Benutzer zu sagen: "Hey! Dieser Wert wird hier angenommen, und/oder du kannst ihn nicht ändern."0 Stimmen
@IzharAazmi er wollte Sie nur daran erinnern. Ich habe viele Dinge umgangen, indem ich readonly/disabled bearbeitet oder benutzerdefinierte Werte in
<select>
0 Stimmen
Duplikat von stackoverflow.com/questions/12267242/
0 Stimmen
@knittl, aktivieren Sie das Kontrollkästchen, um die Lizenzvereinbarung zu akzeptieren, wenn Sie sich auf der Website registrieren. Wenn Sie es nicht senden, kann der Benutzer sagen "Hey, ich habe es nicht akzeptiert", wenn Sie es senden, können Sie überprüfen, ob es aktiviert wurde. Aber es macht keinen Sinn, das Formular mit nicht angekreuztem Kästchen abzuschicken. Es scheint, dass Sie in einem solchen Fall an einem schreibgeschützten Status interessiert sind. Dort sollte es gesendet werden und es sollte markiert sein.
0 Stimmen
Da ich nicht oft mit Kontrollkästchen zu tun habe, vergesse ich diese Unordnung und mache den Fehler. Ich musste eine Warnung in meine js-Hauptdatei einfügen, um mich daran zu erinnern, wenn ich versehentlich "readonly" für eine Checkbox einstelle. Hier ist sie: ** let cbox = $("input:checkbox"); if ($(cbox).prop('readonly')) ($(cbox.prop('readonly')) }; ** alert("Ein Kontrollkästchen kann keine readonly-Eigenschaft haben, bitte beheben!
2 Stimmen
@knittl Man könnte es auch ändern in "warum sollte man irgendetwas schicken, das man nicht bearbeiten kann". Vergessen wir das Senden von statischen Formulardaten, denn wir können immer eine Menge seltsamen Code schreiben, um dem Server mitzuteilen: "Ich habe dieses Feld nicht erhalten, also muss ich meine Datenbank erneut abfragen, um den tatsächlichen Wert zu erhalten, wenn ich dynamische Aktualisierungen durchführe". Im Ernst, es ist, was es ist - jemand hat sich aus Gründen, die mir und den meisten anderen entgehen, entschieden, das Kontrollkästchen "schreibgeschützt" nicht anzubieten. Vielleicht ging es um Bier oder pflanzliche Wirkstoffe. Ich mag es nicht, weil es verwirrend ist. Eine WC3-Diskussion war hier im Gange: github.com/w3c/html/issues/92
0 Stimmen
(@)Queertiy. Um eine eindeutige Auswahl zu gewährleisten, ist es am besten, die Auswahl mit Hilfe von Optionsfeldern zu erzwingen. Die beste Vorgehensweise wäre jedoch, eine explizite Entscheidung zu erzwingen, indem man: 1. Die Schaltflächen zunächst unmarkiert lassen. 2. Wenn eine Option beim Absenden nicht ausgewählt wurde, kann der Servercode die Seite erneut anzeigen.