Das habe ich von Firebug in Firefox gefunden.
Ist es in anderen Browsern dasselbe?
Wenn ja, was ist der Grund dafür?
Das habe ich von Firebug in Firefox gefunden.
Ist es in anderen Browsern dasselbe?
Wenn ja, was ist der Grund dafür?
Antworten:
Ja, nicht alle Browser sollten die deaktivierten Eingaben senden, da sie schreibgeschützt sind.
Weitere Informationen (Abschnitt 17.12.1)
Attributdefinitionen
disabled [CI] Wenn dieses Boolesche Attribut für ein Formularsteuerelement festgelegt ist, wird es für die Benutzereingabe deaktiviert. Wenn festgelegt, hat das Attribut disabled die folgenden Auswirkungen auf ein Element:
- Deaktivierte Steuerelemente erhalten keinen Fokus.
- Deaktivierte Steuerelemente werden in der Tab-Navigation übersprungen.
- Deaktivierte Steuerelemente können nicht erfolgreich sein.
Die folgenden Elemente unterstützen das deaktivierte Attribut: BUTTON, INPUT, OPTGROUP, OPTION, SELECT und TEXTAREA.
Dieses Attribut wird vererbt, aber lokale Deklarationen überschreiben den geerbten Wert.
Wie deaktivierte Elemente gerendert werden, hängt vom Benutzeragenten ab. Beispielsweise "grauisieren" einige Benutzerprogramme deaktivierte Menüelemente, Schaltflächenbeschriftungen usw. aus.
In diesem Beispiel ist das INPUT-Element deaktiviert. Daher kann es keine Benutzereingaben empfangen und sein Wert wird auch nicht mit dem Formular übermittelt.
<INPUT disabled name="fred" value="stone">
Hinweis. Die einzige Möglichkeit, den Wert des deaktivierten Attributs dynamisch zu ändern, besteht in einem Skript.
<input type="hidden">
Element mit demselben Namen / Wert wie die deaktivierte Eingabe hinzu.
disabled
Eingabe wird keine Daten senden.
Verwenden Sie das readonly
Attribut:
<input type="text" readonly />
readonly
funktioniert, stellen Sie einfach sicher, dass Sie "name" attr an die Eingabe übergeben.
Sie können drei Dinge verwenden, um Behinderte nachzuahmen:
HTML: readonly
Attribut (damit der in der Eingabe vorhandene Wert bei der Formularübermittlung verwendet werden kann. Außerdem kann der Benutzer den Eingabewert nicht ändern)
CSS: 'pointer-events':'none'
(verhindert, dass der Benutzer auf die Eingabe klickt)
HTML: tabindex="-1"
(Blockiert den Benutzer, um über die Tastatur zur Eingabe zu navigieren)
Sie werden nicht eingereicht, da dies in der W3C-Spezifikation angegeben ist .
17.13.2 Erfolgreiche Kontrollen
Eine erfolgreiche Kontrolle ist für die Einreichung "gültig". [snip]
- Deaktivierte Steuerelemente können nicht erfolgreich sein.
Mit anderen Worten, die Spezifikation besagt, dass deaktivierte Steuerelemente als ungültig betrachtet werden und nicht eingereicht werden sollten.
Disabled
Kontrollen können nicht erfolgreich sein, und eine erfolgreiche Kontrolle ist für die Übermittlung "gültig". Dies ist der Grund, warum deaktivierte Steuerelemente nicht mit dem Formular gesendet werden.
Es gibt zwei Attribute, nämlich readonly
und disabled
, die eine schreibgeschützte Eingabe vornehmen können. Aber es gibt einen winzigen Unterschied zwischen ihnen.
<input type="text" readonly />
<input type="text" disabled />
readonly
Attribut deaktiviert Ihren Eingabetext und Benutzer können ihn nicht mehr ändern.disabled
Attribut macht Ihren Eingabetext nicht nur deaktiviert (unveränderlich), sondern kann auch nicht gesendet werden .jQuery-Ansatz (1):
$("#inputID").prop("readonly", true);
$("#inputID").prop("disabled", true);
jQuery-Ansatz (2):
$("#inputID").attr("readonly","readonly");
$("#inputID").attr("disabled", "disabled");
JavaScript-Ansatz:
document.getElementById("inputID").readOnly = true;
document.getElementById("inputID").disabled = true;
PS disabled
und readonly
sind Standard-HTML-Attribute. prop
eingeführt mit jQuery 1.6
.
Ausgewählte Steuerelemente können auch bei schreibgeschütztem Attribut weiterhin angeklickt werden
Wenn Sie das Steuerelement weiterhin deaktivieren möchten, dessen Wert jedoch veröffentlicht werden soll. Sie können ein verstecktes Feld erstellen. mit dem gleichen Wert wie Ihre Kontrolle.
Erstellen Sie dann eine Abfrage, wenn Sie die Änderung auswählen
$('#your_select_id').change(function () {
$('#your_hidden_selectid').val($('#your_select_id').val());
});