2012-03-29 7 views
0

Ich habe über so etwas wie seit kurzem:HTML: Mehrfacher Name/Wert für ein Element?

  • <form method="get" action="/somewebdir/script.php"> 
        <input type="radio" name="param0" value="foo" /> 
        <input type="radio" name="param1" value="foo" /> 
        <input type="radio" name="param2" value="bar" /> 
        <input type="radio" name="param2" value="bar" checked="checked" /> 
    </form> 
    

ich neugierig war, ob es eine Möglichkeit gäbe, mehrere Schlüssel/Wert zu senden, wenn die zweite param2, ohne JS gesendet wird.
Damit die Seite so etwas wie führen würde:

  • http://domain/somewebdir/script.php?param2=bar&param3=foobar

Ich änderte den Wert "bar"-"bar&amp;param3=foobar", aber offensichtlich die Sonderzeichen (& und =) wird codiert.

Irgendwelche Ideen? (Wieder w/o JS)


Versteckte Elemente werden nicht, wie es funktioniert immer den Parameter senden, die einen negativen Einfluss auf andere Dinge würden von der Handler aufgerufen wird (script.php)

+0

Sie versteckte Eingänge mit Namen und Werte hinzufügen anderer Parameter, die gesendet werden, wenn das Formular gesendet wird. Dies geschieht dann aber immer, unabhängig davon, welcher Radiobutton überprüft wird. – Stefan

+0

@Stefan: genau :), versuchen, das zu vermeiden. Stellen Sie sich vor, "script.php" ist wirklich ein Handler, im besten Fall würde es die Adressleiste überladen, im schlimmsten Fall hätte das Auswirkungen auf den Inhalt. In diesem Fall habe ich versucht, einen einfachen "Debug" -Funkknopf zu erstellen.Vorerst setze ich Checkboxen, aber um es für Benutzer klarer zu machen, wollte ich eine Debug-Spalte erstellen, genauso wie die vorherige Optionsschaltfläche, aber mit einem zusätzlichen 'debug = 1' (oder etwas ähnlichem Parameter) – vol7ron

+0

Keine Möglichkeit, dies ohne Javascript zu tun. Sie können die Optionsfeldgruppen auch in zwei Formulare aufteilen, wobei das zweite Formular eine zusätzliche "param3" -Eingabe mit dem Wert "foobar" enthält. Dann können Sie jedoch beide Formulare nicht mit einer Schaltfläche senden. – Stefan

Antwort

2

Nein, das ist nicht möglich. Stattdessen tun Sie es von der Serverseite (wie in, erwarten Sie die Eingabe, und wenn es ankommt, handeln Sie entsprechend). Wenn es nicht vom Benutzer kommt, ist es keine Benutzereingabe!

Wenn Sie für jeden Benutzer einen bestimmten Wert benötigen, können Sie eine ausgeblendete Eingabe verwenden und diese mit Ihrem Optionsfeld überprüfen.

<input type="hidden" name="param3" value="value here"> 
+0

Wahrscheinlich wird dies wegen der "Nein, es kann nicht getan werden" – vol7ron

1

Sie können einen dritten Parameter als verborgenes Element passieren:

<input type="hidden" name="param3" value="foobar" /> 

Dann auf der Serverseite, prüfen Sie, ob der zweite Wert „on“ (aktiviert) wurde, bevor der dritte Parameter verarbeitet.

Wenn das serverseitige Skript (script.php) nicht in Ihrer Kontrolle ist und Sie nur einen dritten Parameter übergeben müssen, wenn der zweite Parameter angegeben ist, haben Sie ohne JS kein Glück.

1

Ususally würden Sie ein benutzerdefiniertes Trennzeichen und es auf dem Server analysieren:

<input type="radio" name="param2" value="bar|happy|friday" checked="checked" /> 
0

, solange die Namen der Tags unterschiedlich sind, werden sie als unterschiedliche Elemente des $ _GET oder Array $ _POST erhalten vergangen ...

Verwandte Themen