Ist es möglich, Formularfelder mit CSS zu deaktivieren? Ich weiß natürlich, dass das Attribut deaktiviert ist, aber ist es möglich, dies in einer CSS-Regel anzugeben? Etwas wie -
<input type="text" name="username" value="admin" >
<style type="text/css">
input[name=username] {
disabled: true; /* Does not work */
}
</style>
Der Grund, den ich frage, ist, dass ich eine Anwendung habe, in der die Formularfelder automatisch generiert werden und Felder basierend auf einigen Regeln (die in Javascript ausgeführt werden) ausgeblendet / angezeigt werden. Jetzt möchte ich es erweitern, um das Deaktivieren / Aktivieren von Feldern zu unterstützen, aber die Art und Weise, wie die Regeln geschrieben werden, um die Stileigenschaften der Formularfelder direkt zu bearbeiten. Jetzt muss ich die Regel-Engine erweitern, um Attribute sowie den Stil von Formularfeldern zu ändern, und irgendwie scheint es nicht ideal zu sein.
Es ist sehr merkwürdig, dass Sie sichtbare und angezeigte Eigenschaften in CSS haben, diese jedoch nicht aktivieren / deaktivieren. Gibt es so etwas im noch in Arbeit befindlichen HTML5-Standard oder sogar etwas Nicht-Standard (browserspezifisch)?
Antworten:
Dies kann hilfreich sein:
Aktualisieren:
Wenn Sie den Registerkartenindex deaktivieren möchten, können Sie ihn folgendermaßen verwenden:
quelle
Sie können den deaktivierten Effekt mithilfe von CSS vortäuschen.
Möglicherweise möchten Sie auch Farben usw. ändern.
quelle
Da die Regeln in JavaScript ausgeführt werden, können Sie sie mit Javascript (oder in meinem Beispiel mit jQuery) deaktivieren.
AKTUALISIEREN
Die
attr
Funktion ist nicht mehr der primäre Ansatz dafür, wie in den Kommentaren unten ausgeführt wurde. Dies geschieht nun mit derprop
Funktion.quelle
.prop()
anstelle von.attr()
für diesen Fall vorgeschlagen. "Ab jQuery 1.6 gibt die .attr () -Methode undefiniert für Attribute zurück, die nicht festgelegt wurden. Verwenden Sie die .prop () -Methode, um DOM-Eigenschaften wie den aktivierten, ausgewählten oder deaktivierten Status von Formularelementen abzurufen und zu ändern. "" Quellendokumentation : .attr () und .prop ()Es ist sehr neugierig, dass Sie denken, dass das sehr neugierig ist. Sie verstehen den Zweck von CSS falsch. CSS soll das Verhalten von Formularelementen nicht ändern . Es soll nur ihren Stil ändern . Das Ausblenden eines Textfelds bedeutet nicht, dass das Textfeld nicht mehr vorhanden ist oder dass der Browser seine Daten nicht sendet, wenn Sie das Formular senden. Alles was es tut, ist es vor den Augen des Benutzers zu verbergen.
Um Ihre Felder tatsächlich zu deaktivieren, müssen Sie das
disabled
Attribut in HTML oder diedisabled
DOM-Eigenschaft in JavaScript verwenden.quelle
pointer-events
, eine CSS-Eigenschaft zu sein. Zu Ihrer Information,pointer-events
stammt von SVG .Sie können CSS nicht zum Deaktivieren von Textbox verwenden. Lösung wäre HTML-Attribut.
quelle
disabled
Attribut werden nicht gesendet - ihre Werte werden nicht auf dem Server veröffentlicht. Lesen Sie weiter: stackoverflow.com/q/8925716/1066234Die praktische Lösung besteht darin, CSS zu verwenden, um die Eingabe tatsächlich auszublenden.
Um dies zu seiner natürlichen Schlussfolgerung zu bringen, können Sie zwei HTML-Eingaben für jede tatsächliche Eingabe schreiben (eine aktiviert und eine deaktiviert) und dann mithilfe von Javascript das CSS steuern, um sie anzuzeigen und auszublenden.
quelle
das erste Mal etwas zu beantworten und scheinbar nur ein bisschen spät ...
Ich bin damit einverstanden, dies mit Javascript zu tun, wenn Sie es bereits verwenden.
Für eine zusammengesetzte Struktur, wie ich sie normalerweise verwende, habe ich ein CSS-Pseudo-After-Element erstellt, um die Elemente für die Benutzerinteraktion zu blockieren und das Styling zu ermöglichen, ohne die gesamte Struktur bearbeiten zu müssen.
Beispielsweise:
Ich kann eine
disabled
Klasse auf die Verpackung legendiv
Dies würde den Text in grau
div
machen und ihn für den Benutzer unbrauchbar machen.Mein Beispiel JSFiddle
quelle
Ich benutze immer:
und dann Anwenden der CSS-Klasse auf das Eingabefeld:
quelle
Ich weiß, dass diese Frage ziemlich alt ist, aber für andere Benutzer, die auf dieses Problem stoßen, ist der einfachste Weg, die Eingabe zu deaktivieren, einfach ': disabled'.
In der Realität, wenn Sie ein Skript haben, um die Eingabe dynamisch / automatisch mit Javascript oder JQuery zu deaktivieren, das automatisch basierend auf der von Ihnen hinzugefügten Bedingung deaktiviert wird.
In jQuery zum Beispiel:
Hoffe die Antwort in CSS hilft.
quelle
Sie können das leider nicht tun, aber Sie können in jQuery Folgendes tun, wenn Sie die Attribute nicht zu den Feldern hinzufügen möchten. Platzieren Sie dies einfach in Ihrem
<head></head>
TagWenn Sie die Felder im DOM (mit JS) generieren, sollten Sie stattdessen Folgendes tun:
quelle
Dies kann für einen unkritischen Zweck erfolgen, indem Sie ein Overlay über Ihr Eingabeelement legen. Hier ist mein Beispiel in reinem HTML und CSS.
https://jsfiddle.net/1tL40L99/
quelle
Es gibt keine Möglichkeit, CSS für diesen Zweck zu verwenden. Mein Rat ist, einen Javascript-Code einzufügen, in dem Sie die CSS-Klasse zuweisen oder ändern, die auf die Eingaben angewendet wird. Sowas in der Art :
quelle
Eine Variation der
pointer-events: none;
Lösung, die das Problem behebt, dass die Eingabe weiterhin über die Bezeichnung control oder tabindex zugänglich ist, besteht darin, die Eingabe in ein div zu verpacken, das als deaktivierte Texteingabe gestaltet ist, und festzulegen,input { visibility: hidden; }
wann die Eingabe "deaktiviert" ist. .Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/visibility#Values
Das im obigen Snippet angewendete deaktivierte Styling stammt aus der Chrome-Benutzeroberfläche und ist möglicherweise visuell nicht mit deaktivierten Eingaben in anderen Browsern identisch. Möglicherweise kann es mit motorspezifischen CSS-Erweiterungspräfixen für einzelne Browser angepasst werden. Auf einen Blick glaube ich nicht, dass dies möglich ist:
Microsoft CSS-Erweiterungen , Mozilla CSS-Erweiterungen , WebKit CSS-Erweiterungen
Es wäre viel mehr sinnvoll erscheint , einen zusätzlichen Wert einzuführen
visibility: disabled
oderdisplay: disabled
vielleicht sogarappearance: disabled
, davisibility: hidden
bereits das wirkt sich das Verhalten der anwendbaren Elemente alle zugehörigen Steuerelemente.quelle