Ich habe ein select
Formularfeld, das ich als "schreibgeschützt" markieren möchte, da der Benutzer den Wert nicht ändern kann, der Wert jedoch weiterhin mit dem Formular gesendet wird. Die Verwendung des disabled
Attributs verhindert, dass der Benutzer den Wert ändert, sendet den Wert jedoch nicht mit dem Formular.
Das readonly
Attribut ist nur für input
und textarea
Felder verfügbar , aber genau das möchte ich. Gibt es eine Möglichkeit, das zum Laufen zu bringen?
Zwei Möglichkeiten, die ich in Betracht ziehe, sind:
- Anstatt das zu deaktivieren
select
, deaktivieren Sie alleoption
s und verwenden Sie CSS, um die Auswahl auszublenden, sodass sie wie deaktiviert aussieht. - Fügen Sie der Schaltfläche "Senden" einen Klickereignishandler hinzu, damit alle deaktivierten Dropdown-Menüs aktiviert werden, bevor Sie das Formular senden.
javascript
html
css
forms
html-select
Marquis Wang
quelle
quelle
trafalmadorian
workest angebotenen Lösungen sind die besten. Es deaktiviert alle Eingänge, die nicht ausgewählt sind. Es würde auch funktionieren, wenn für die Auswahl mehrere Optionen aktiviert sind.$('#toSelect')find(':not(:selected)').prop('disabled',true);
Antworten:
Wo
select_name
ist der Name, den Sie in der Regel die geben würde<select>
.Andere Option.
Bei diesem habe ich festgestellt, dass Sie je nach verwendetem Webserver möglicherweise die
hidden
Eingabe entweder vor oder nach dem vornehmen müssen<select>
.Wenn mein Gedächtnis mir richtig dient, setzen Sie es mit IIS vor, mit Apache nach. Testen ist wie immer der Schlüssel.
quelle
Deaktivieren Sie die Felder und aktivieren Sie sie, bevor das Formular gesendet wird:
jQuery-Code:
quelle
Ich habe nach einer Lösung dafür gesucht, und da ich in diesem Thread keine Lösung gefunden habe, habe ich meine eigene gemacht.
Ganz einfach, Sie verwischen das Feld nur, wenn Sie sich darauf konzentrieren, so etwas wie das Deaktivieren, aber Sie senden tatsächlich seine Daten.
quelle
Ich war mit einem etwas anderen Szenario konfrontiert, da ich dem Benutzer nur nicht erlauben wollte, den ausgewählten Wert basierend auf einem früheren Auswahlfeld zu ändern. Am Ende habe ich nur alle anderen nicht ausgewählten Optionen in der Auswahlbox mit deaktiviert
quelle
attr
jedoch ändern mitprop
, würde$('#toSelect')find(':not(:selected)').prop('disabled',true);
Dieselbe von Tres vorgeschlagene Lösung ohne Verwendung von jQuery
Dies könnte jemandem helfen, mehr zu verstehen, ist aber offensichtlich weniger flexibel als das jQuery.
quelle
getElementsByTagName('select')
?Es funktioniert nicht mit dem: Eingangswähler für ausgewählte Felder. Verwenden Sie Folgendes:
quelle
Ich verwende den nächsten Code, um Optionen in Auswahlen zu deaktivieren
quelle
Der einfachste Weg, den ich gefunden habe, war, eine winzige Javascript-Funktion zu erstellen, die an Ihr Formular gebunden ist:
und Sie nennen es in Ihrer Form hier:
Oder Sie können es in der Funktion aufrufen, mit der Sie Ihr Formular überprüfen :)
quelle
Fügen Sie einfach eine Zeile hinzu, bevor Sie sie senden.
quelle
Oder verwenden Sie JavaScript, um den Namen der Auswahl zu ändern und auf deaktiviert zu setzen. Auf diese Weise wird die Auswahl weiterhin gesendet, aber unter Verwendung eines Namens, den Sie nicht überprüfen.
quelle
Ich habe ein schnelles Plugin (nur Jquery) erstellt, das den Wert in einem Datenfeld speichert, während eine Eingabe deaktiviert ist. Dies bedeutet nur, solange das Feld programmgesteuert durch jquery mit .prop () oder .attr () deaktiviert wird. Wenn Sie dann mit .val (), .serialize () oder .serializeArra () auf den Wert zugreifen, wird immer das zurückgegeben Wert auch wenn deaktiviert :)
Schamloser Stecker: https://github.com/Jezternz/jq-disabled-inputs
quelle
Basierend auf der Lösung des Jordan habe ich eine Funktion erstellt, die automatisch eine versteckte Eingabe mit demselben Namen und demselben Wert der Auswahl erstellt, die ungültig werden soll. Der erste Parameter kann eine ID oder ein jquery-Element sein. Der zweite ist ein optionaler boolescher Parameter, bei dem "true" deaktiviert und "false" die Eingabe aktiviert. Wenn nicht angegeben, wechselt der zweite Parameter die Auswahl zwischen "aktiviert" und "deaktiviert".
quelle
Ich habe eine praktikable Lösung gefunden: Entfernen Sie alle Elemente außer dem ausgewählten. Sie können den Stil dann in einen Stil ändern, der ebenfalls deaktiviert aussieht. Verwenden von jQuery:
quelle
quelle
Eine weitere Option ist die Verwendung des Attributs readonly.
Wenn schreibgeschützt der Wert weiterhin gesendet wird, ist das Eingabefeld ausgegraut und der Benutzer kann es nicht bearbeiten.
Bearbeiten:
Zitiert von http://www.w3.org/TR/html401/interact/forms.html#adef-readonly :
Wenn er sagt , das Element erfolgreich sein kann, bedeutet dies , es kann eingereicht werden, wie hier angegeben: http://www.w3.org/TR/html401/interact/forms.html#successful-controls
quelle