Alle Werte in Selectfeld anwählen

A

antihero

Hi!

Ich suche für folgendes Problem eine Lösung:
Bei einem Select Feld (Mehrfachauswahl möglich) müssen standardmässig die Werte ausgewählt werden damit sie (zB. per Post) an die PHP Datei weitergeleitet werden.

In einem Speziellen System möchte ich den Benutzer aber nicht "zwingen" die Werte alle auszuwählen. Am einfachsten 8denke ich wenigstens) wäre es eine Javascript-funktion einzubauen welche beim Formular abschicken ausgelöst wird und alle Werte in diesem Select-Feld markiert.

Vielen Dank für eure Hilfe!

antihero
 
Das könntst du so machen:
Code:
<html>
<head>
<script type="text/javascript">
function selectAll()
{
obj=document.forms[0].liste;
for(o=0;o<obj.options.length;++o)
	{
	obj.options[o].selected=true;
	}
return true;
}
</script>
</head>
<body>
<form onsubmit="return selectAll()">
<select name="liste"multiple="multiple">
<option>bla</option>
<option>blubb</option>
<option>blablubb</option>
</select>
</form>
</body>
</html>
Aber wenn sowieso immer alles gesendet werden soll, würd ich die Sachen gleich in versteckte Formularfelder schreiben, dann bist du nicht vom aktiviertes JS abhängig.
 
Original geschrieben von antihero
Hi!
In einem Speziellen System möchte ich den Benutzer aber nicht "zwingen" die Werte alle auszuwählen. Am einfachsten 8denke ich wenigstens) wäre es eine Javascript-funktion einzubauen welche beim Formular abschicken ausgelöst wird und alle Werte in diesem Select-Feld markiert.
Ja, sollte am einfachsten sein :)
Code:
<html>
<head>
    <script type="text/javascript">
    function test()
    { 
      var x=0;
      with(document.testform.testmenu){
        if(options.selectedIndex==-1){
          for(e in options){
            options[x].selected=true;
            x++;
          }
        }
      }
      return true;
    }
    </script>
</head>
<body>

<form name="testform" onsubmit="return test()">

<select name="testmenu" size="5" multiple>
<option>http://www.tutorials.de</option>
<option>http://www.google.de</option>
<option>http://www.php.net</option>
<option>http://www.heise.de</option>
<option>http://www.drweb.de</option>
</select>

<input type="submit">

</form>

</body>
</html>

bye

//edit: ich hätts mir ja denken können, das der Fatalus wieder schneller war :rolleyes:
 
Zuletzt bearbeitet:
Vielen Dank euch beiden!

@fatalus: Die Werte in meinem Select-Feld werden per Javascript aus einem anderen Select-Feld eingefügt, daher muss ich sowieso auf aktiviertes Javascript vertrauen.
Es handelt sich aber um eine Administrationssystem welches nur intern in einer "Firma" benutzt wird wo die Internet Explorer-Konfiguration standardisiert ist, mit aktiviertem Javascript. :)

@Andreas: Ja es soll möglichst einfach sein. Die Erklärung oben gibt meinem Problem ein bisschen Sinn... ;)

antihero
 
Also, ich habe das Script von Andreas eingebaut. fatalus' Beispiel ergibt eine Fehlermeldung "obj has no properties" und bricht dann ab (logischerweise).

Das Script von Andreas läuft ein bisschen weiter und wählt alle Einträge an , bricht dann allerdings auch ab, Fehlermeldung "options[x] has no properties".
Weiss jemand von euch wo das Problem liegen könnte?

Danke!

antihero
 
Was mein Skript betrifft... es geht davon aus, dass sich das entsprechende <select> im ersten Formular in der Seite befindet und den Namen "liste" trägt...
ist dies nicht der Fall, musst du es entsprechend anpassen.
 
Ja, dass habe ich natürlich angepasst.
Hier der Code den ich verwende, 1:1:

PHP:
var x=0;

 with(document.newKrankheit.selRightGe){
   if(options.selectedIndex==-1){
     for(e in options){
       options[x].selected=true;
       x++;
     }
   }
 }
 
Hier das Select-Feld.

<select size="7" name="selRightGe[]" id="selRightGe" ondblclick="AddLeft('ge');" multiple style="width:168px;font-size:9px;font-family:Arial,Helvetica,sans-serif;"></select>

Eben, sind keine Werte drin bis man solche per Javascript aus einem anderen Select Feld einträgt. Das sollte aber nicht hinderlich sein. Ich habe in dem von dir (Andreas) kopierten Script ein alert(formular.length); eingebaut und da wird die korrekte Anzahl an eingefügten Optionen ausgegeben...

Ich benutze Firebird/win2k. Mit dem IE treten aber die gleichen Probleme auf.
komisch...

Vielen Dank schonmal!

antihero
 
Es liegt zu 99,9% an den "[]" im Namen - ist für PHP oft nützlich, aber in der JavascriptSyntax verboten (beim Name-Attribut).
Versuch folgendes (ohne Gewähr)

anstatt
Code:
with(document.newKrankheit.selRightGe){
lieber
Code:
var d = document.getElementById('selRightGe');
with(d){

ansonsten muss man das Skript ein kleines bisschen umschreiben - wär aber nicht viel :)


bye
 
Zurück