Ich habe ein Auswahl-Tag mit einigen Optionen in einem HTML-Formular erhalten:
(Die Daten werden mit PHP gesammelt und verarbeitet.)
Testen:
<select name="Testing">
<option value="1"> One
<option value="2"> Two
<option value="3"> Three
</select>
Ist es möglich, dass eine Option mehrere Werte enthält, z. B. wenn ein Benutzer "Eins" auswählt, werden einige andere Werte, die sich auf diese Option beziehen, in die Datenbank geschrieben.
Wie soll ich das select
Tag so gestalten, dass jede der Optionen einen oder einen Wert wie diesen enthalten kann:
<select name="Testing">
<option value="1" value="2010"> One
<option value="2" value="2122"> Two
<option value="3" value="0"> Three
</select>
Antworten:
Ein Weg, dies zu tun, erstens ein Array, zweitens ein Objekt:
Bearbeitet (3 Jahre nach Beantwortung), um beide Werte in das JSON-Format (unter Verwendung
JSON.stringify()
) zu bringen, da sich meine Proof-of-Concept-Antwort "einen Neuling-Entwickler verwirren könnte".quelle
Ich habe mich heute tatsächlich gefragt, und ich habe es erreicht, indem ich die PHP-Explosionsfunktion wie folgt verwendet habe:
HTML-Formular (in einer Datei namens 'doublevalue.php':
PHP-Aktion (in einer Datei namens doublevalue_action.php)
Wie Sie im ersten Code sehen können, erstellen wir ein Standard-HTML-Auswahlfeld mit zwei Optionen. Jede Option hat 1 Wert, der ein Trennzeichen (in diesem Fall '|') zum Aufteilen der Werte (in diesem Fall Modell und Farbe) hat.
Auf der Aktionsseite explodiere ich die Ergebnisse in ein Array und rufe dann jedes einzelne auf. Wie Sie sehen können, habe ich sie getrennt und beschriftet, damit Sie den Effekt sehen können, den dies verursacht.
Ich hoffe das hilft jemandem :)
quelle
Es ist möglich, mehrere Werte in einer Auswahloption zu haben, wie unten gezeigt.
Sie können den ausgewählten Wert für ein Änderungsereignis mit jquery abrufen, wie unten gezeigt.
Weitere Details finden Sie in diesem LINK
quelle
Eine Möglichkeit besteht darin, einen Mehrfachwert mit einem durch Kommas getrennten Wert zu setzen
mögen
und auf der Serverseite trennen Sie sie
quelle
Wenn ich das tun muss, mache ich die anderen Werte zu Datenwerten und verwende dann js, um sie einer versteckten Eingabe zuzuweisen
quelle
Wenn Sie diese Informationen in die Datenbank schreiben möchten, warum müssen Sie dann einen Primärwert und 'verwandte' Werte im
value
Attribut haben? Warum senden Sie nicht einfach den primären Wert an die Datenbank und lassen den relationalen Charakter der Datenbank den Rest erledigen.Wenn Sie mehrere Werte in Ihrem
OPTION
s haben müssen, versuchen Sie es mit einem Trennzeichen, das nicht sehr häufig vorkommt:...
oder fügen Sie ein Objektliteral (JSON-Format) hinzu:
...
Es hängt wirklich davon ab, was Sie versuchen zu tun.
quelle
Werte für jede Option wie setzen
Verwenden Sie auf der Serverseite im Falle von PHP Funktionen wie explode [array] = explode ([delimeter], [gebuchter Wert]);
Der obige Code gibt ein Array zurück, nur die Zahlen und das ':' werden entfernt
quelle
Ich habe dies mithilfe von Datenattributen getan. Ist viel sauberer als andere Methoden, die versuchen zu explodieren usw.
HTML
JS
quelle
Was ist mit HTML-Datenattributen? Das ist der einfachste Weg. Referenz von w3school
In deinem Fall
quelle
Verwenden Sie ein Trennzeichen, um die Werte zu trennen.
quelle
In HTML
Für JS
ODER FÜR PHP
quelle
Doppelte Tag-Parameter sind in HTML nicht zulässig. Was Sie tun könnten, ist
VALUE="1,2010"
. Sie müssten jedoch den Wert auf dem Server analysieren.quelle
Anstatt die Optionen auf der Clientseite zu speichern, besteht eine andere Möglichkeit darin, die Optionen als Subarray-Elemente eines assoziativen / indizierten Arrays auf der Serverseite zu speichern. Die Werte des Select-Tags enthalten dann nur die Schlüssel, mit denen das Sub-Array dereferenziert wird.
Hier ist ein Beispielcode. Dies ist in PHP geschrieben, da das OP PHP erwähnt hat, aber es kann an jede serverseitige Sprache angepasst werden, die Sie verwenden:
PHP:
quelle
Dies mag für andere nützlich sein oder auch nicht, aber für meinen speziellen Anwendungsfall wollte ich nur, dass zusätzliche Parameter aus dem Formular zurückgegeben werden, wenn die Option ausgewählt wurde - diese Parameter hatten für alle Optionen die gleichen Werte, also ... meine Lösung war es, versteckte Eingaben in das Formular mit der Auswahl aufzunehmen, wie:
Vielleicht offensichtlich ... offensichtlicher, nachdem Sie es gesehen haben.
quelle
Sie können mehrere Attribute verwenden
quelle