Ich habe einige deaktivierte Eingaben in einem Formular und möchte sie an einen Server senden, aber Chrome schließt sie von der Anforderung aus.
Gibt es eine Problemumgehung dafür, ohne ein verstecktes Feld hinzuzufügen?
<form action="/Media/Add">
<input type="hidden" name="Id" value="123" />
<!-- this does not appear in request -->
<input type="textbox" name="Percentage" value="100" disabled="disabled" />
</form>
Antworten:
Elemente mit dem
disabled
Attribut werden nicht übermittelt oder Sie können sagen, dass ihre Werte nicht veröffentlicht werden ( Informationen zum Erstellen des Formulardatensatzes finden Sie im zweiten Aufzählungspunkt unter Schritt 3 in der HTML 5-Spezifikation ).Dh
Zu Ihrer Information , gemäß 17.12.1 in der HTML 4-Spezifikation:
Sie können
readonly
in Ihrem Fall ein Attribut verwenden. Auf diese Weise können Sie die Daten Ihres Feldes veröffentlichen.Dh
Zu Ihrer Information , gemäß 17.12.2 in der HTML 4-Spezifikation:
quelle
Mit Jquery und dem Senden der Daten mit Ajax können Sie Ihr Problem lösen:
quelle
cursor:not-allowed;
Um Werte von deaktivierten Eingaben zusätzlich zu aktivierten Eingaben zu veröffentlichen, können Sie einfach alle Eingaben des Formulars wieder aktivieren, während es gesendet wird.
Wenn Sie jQuery bevorzugen:
Für ASP.NET MVC C # Razor fügen Sie den Submit-Handler wie folgt hinzu:
quelle
Wenn Sie das Feld unbedingt deaktivieren und die Daten übergeben müssen, können Sie ein Javascript verwenden, um dieselben Daten in ein verstecktes Feld einzugeben (oder einfach auch das versteckte Feld festlegen). Dies würde es Ihnen ermöglichen, es zu deaktivieren, aber die Daten trotzdem zu veröffentlichen, obwohl Sie auf einer anderen Seite veröffentlichen würden.
quelle
Ich aktualisiere diese Antwort, da sie sehr nützlich ist. Fügen Sie einfach schreibgeschützt zur Eingabe hinzu.
Das Formular lautet also:
quelle
Semantisch fühlt sich das wie das richtige Verhalten an
Ich würde mich fragen: " Warum muss ich diesen Wert einreichen? "
Wenn Sie eine deaktivierte Eingabe in ein Formular haben, möchten Sie vermutlich nicht, dass der Benutzer den Wert direkt ändert
Jeder Wert, der in einer deaktivierten Eingabe angezeigt wird, sollte entweder sein
Unter der Annahme, dass der Server, der das Formular verarbeitet, mit dem Server identisch ist, der es bereitstellt, sollten alle Informationen zur Reproduktion der Werte der deaktivierten Eingaben bei der Verarbeitung verfügbar sein
Um die Datenintegrität zu gewährleisten - selbst wenn der Wert der deaktivierten Eingabe an den Verarbeitungsserver gesendet wurde, sollten Sie ihn wirklich validieren. Diese Validierung würde den gleichen Informationsstand erfordern, den Sie ohnehin benötigen würden, um die Werte zu reproduzieren!
Ich würde fast argumentieren, dass schreibgeschützte Eingaben auch nicht in der Anfrage gesendet werden sollten
Ich bin froh, korrigiert zu werden, aber alle Anwendungsfälle, die ich mir vorstellen kann, in denen schreibgeschützte / deaktivierte Eingaben eingereicht werden müssen, sind wirklich nur verschleierte Styling-Probleme
quelle
Ich finde das funktioniert einfacher. Lesen Sie nur das Eingabefeld und formatieren Sie es dann so, dass der Endbenutzer weiß, dass es schreibgeschützt ist. Hier platzierte Eingaben (z. B. von AJAX) können weiterhin ohne zusätzlichen Code gesendet werden.
quelle
Sie können das Deaktivieren vollständig vermeiden. Dies ist schmerzhaft, da das HTML-Formularformat nichts im Zusammenhang mit
<p>
oder einem anderen Label sendet .So können Sie stattdessen regelmäßig setzen
füge das hinzu
readonly="readonly"
Ihr Text wird nicht deaktiviert, aber vom Benutzer nicht geändert, sodass er wie
<p>
folgt funktioniert und Wert über das Formular sendet. Entfernen Sie einfach den Rand, wenn Sie ihn eher wie ein<p>
Tag gestalten möchtenquelle