Frage

Ich habe ein Formular, in dem ich ein Array von Kontrollkästchen und einige Felder deaktivieren muss, damit der Benutzer seine Werte nicht ändern/ändern kann. Wenn ich das Formular jedoch einreiche, fehlen die Postwerte der deaktivierten Elemente. Wie kann ich das verwalten, was ich ohne dieses Problem zu tun versuche?

Im Moment deaktiviere ich die Felder, indem ich den Container -Div so deaktiviere:

#unselectable {
    -moz-user-select: -moz-none;
    -khtml-user-select: none;
    -webkit-user-select: none;
    -o-user-select: none;
    -webkit-user-select: none;
    cursor:not-allowed; 

}
War es hilfreich?

Lösung

Nun, es gibt 3 Lösungen, an die ich denken kann:

  • Mach sie readonly durch Hinzufügen des readonly Eigenschaft zum Element.
  • Deaktivieren Sie sie in CSS/JavaScript. Färben Sie es so, als wäre es deaktiviert und erlauben Sie nicht mit JavaScript das Bearbeiten.
  • Lassen Sie es deaktiviert und entfernen Sie die Behinderten beim Senden.

Treffen Sie Ihre Wahl :)

Andere Tipps

Du könntest benutzen readonly Anstatt von disabled Wich ist fast gleich für den Benutzer (kann nicht bearbeitet werden), aber die Werte von readonly-Emelemente werden eingereicht, während die disabled diejenigen nicht.

Beachten Sie, dass es gibt Einige andere Unterschiede Zwischen readonly und behindert kann wich zu anderen Problemen für Sie führen:

Das behinderte Attribut

  • Werte für deaktivierte Formularelemente werden nicht an die Prozessormethode übergeben. Das W3C nennt dies ein erfolgreiches Element. (Dies funktioniert den Kontrollkästchen des Formulars, die nicht überprüft werden, ähnlich.)
  • Einige Browser können überschreiben oder ein Standardstyling für behinderte Formularelemente bereitstellen. (Grey Out oder Präge Text) Internet Explorer 5.5 ist besonders böse.
  • Deaktivierte Formularelemente erhalten keinen Fokus.
  • Deaktivierte Formularelemente werden in der Tabbing -Navigation übersprungen.

Das einzige Attribut nur lesen

  • Nicht alle Formularelemente haben ein readonly -Attribut. Am bemerkenswertesten sind, und Elemente haben keine readonly -Attribute (obwohl beide behinderte Attribute haben)
  • Browser geben kein Standard -überschriebenes visuelles Feedback, dass das Formularelement nur gelesen wird. (Dies kann ein Problem sein ... siehe unten.)
  • Formularelemente mit dem Readonly -Attributsatz werden an den Formularprozessor übergeben.
  • Lesen Sie nur Formularelemente können den Fokus erhalten
  • Lesen Sie nur Formularelemente in der Registerkarte Navigation.

Es macht nicht viel Punkt beim Senden der gleichen Daten nach und nach.

Einfach in die Serverseite und verwenden Sie es dann beim Senden.

Außerdem unter Annahme dessen

Der Benutzer kann seine Werte nicht ändern/ändern.

ist ziemlich albern.

Sie könnten "schreibgeschützte" anstelle von deaktiviert verwenden, was den gewünschten Effekt haben sollte

Sie können auch JavaScript verwenden, um Ihr Formular einzureichen, und die verschiedenen Felder vorab (aktivieren: p)?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top