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 readonlyAttribut:
<input type="text" readonly />
readonlyfunktioniert, stellen Sie einfach sicher, dass Sie "name" attr an die Eingabe übergeben.
Sie können drei Dinge verwenden, um Behinderte nachzuahmen:
HTML: readonlyAttribut (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.
DisabledKontrollen 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 readonlyund 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 />
readonlyAttribut deaktiviert Ihren Eingabetext und Benutzer können ihn nicht mehr ändern.disabledAttribut 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 disabledund readonlysind Standard-HTML-Attribute. propeingefü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());
});