Seite 1 von 1

JS-Problem: multiple-Auswahl löschen

Verfasst: 05.04.2006, 17:07
von blinks
Hi,

ich habe folgendes Formular:

Code: Alles auswählen

<form action="" name="filter" method="post">
   <select name="filter_zutaten&#91;&#93;" size="4" multiple>
      <option value="0">egal</option>
      <option value="1" >Salami</option>
      <option value="2" selected>Schinken</option>
      <option value="3" selected>Tomaten</option>
   </select>
   <input type="hidden" value="1" name="filter_aktiv" />
   <input type="submit" value="Filtern..." />
   <input type="button" value="Zur&uuml;cksetzen" onclick="resetFilter&#40;&#41;" />  
</form>
Die Funktion resetFilter() schaut wie folgt aus:

Code: Alles auswählen

function resetFilter&#40;&#41; &#123;
   document.filter.filter_zutaten.blur&#40;&#41;;
   document.filter.submit&#40;&#41;;
&#125;
Bei einem Klick auf den Button 'Zurücksetzen' sollen also alle Auswahlen aufgehoben (unselected) werden und ein Submit soll angeleihert werden. Bei Strings funktioniert's einwandfrei mit

Code: Alles auswählen

document.filter.filter_tracking.value='';
Aber filter_zutaten ist ein Array... Naja, lange rede kurzer Sinn: wie bekomme ich per JS alle Auswahlen gelöscht, bzw. unselected?!?

Vielen Dank schonmal!

EDIT:

mit

Code: Alles auswählen

document.filter.filter_zutaten.options&#91;&#93;.selected=false;
kommt

Code: Alles auswählen

Fehler&#58; document.filter.filter_zutaten has no properties
EDIT 2:

Code: Alles auswählen

<select name="filter_zutaten" size="4" multiple>
(also KEIN array) und die Sache funktioniert... Da aber eine Mehrfachauswahl möglich sein muss, brauche ich hier ein Array... Hilfeeee :cry:

Verfasst:
von

Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

Verfasst: 05.04.2006, 17:45
von Ixion
Hallo blinks,

versuchs mal mit der folgenden Schleife:

Code: Alles auswählen

function resetFilter&#40;&#41; &#123;  
	for &#40;var i = 0;i < document.filter.filter_zutaten.length;i++&#41;&#123;
		document.filter.filter_zutaten.options&#91;i&#93;.selected = false;
	&#125;
        document.filter.submit&#40;&#41;;
&#125; 
Ich habe allerdings auch noch den Namen von deinem Zutatenfeld verändert und das "[]" entfernt:

Code: Alles auswählen

<select name="filter_zutaten" size="4" multiple>
Ich hoffe, daß hilft weiter.

Grüsse Ixion

Verfasst: 05.04.2006, 17:52
von blinks
Ixion hat geschrieben:Ich habe allerdings auch noch den Namen von deinem Zutatenfeld verändert und das "[]" entfernt:

Hmmm, danke schonmal, aber das "[]" muss leider auf jedenfall bleiben, denn ich brauche in meinem Script ein Array und keinen String... :( Ich verzweifel langsam.... danke trotzdem!

Verfasst:
von

JS-Problem: multiple-Auswahl löschen

Verfasst: 05.04.2006, 18:00
von Ixion
Das verstehe ich nicht so ganz. "filter_zutaten" ist doch lediglich der Name deines multiplen Select-Feldes. Durch das submit wird das Feld weitergegeben, unabhängig davon wie es heißt. Man kann also nach dem submit wieder mit einer Schleife auf die einzelnen Elemente zugreifen.

Hier ist eine kurze Anleitung dazu: https://www.dcljs.de/faq/antwort.php?An ... adioselect

JS-Problem: multiple-Auswahl löschen

Verfasst: 05.04.2006, 18:04
von blinks
leider wird, wenn ich das "[]" weglasse, NUR das erste markierte Element in "filter_zutaten" übergeben, ich möchte aber natürlich, dass ich in meinem Script alle ausgewählten Optionen erkennen und verarbeiten kann. Daher muss ich ein Array übergeben, welches man erzeugt, indem man "[]" anhängt...

Verfasst: 05.04.2006, 19:15
von Ixion
Ich glaube, ich weiß jetzt was du meinst. Der folgende Code funktioniert bei mir:

Code: Alles auswählen

function resetFilter&#40;&#41; 
	  &#123;  
		for&#40;var i = 0;i < document.getElementsByName&#40;"filter_zutaten&#91;&#93;"&#41;&#91;0&#93;.length;i++&#41;
		&#123;
			document.getElementsByName&#40;"filter_zutaten&#91;&#93;"&#41;&#91;0&#93;.options&#91;i&#93;.selected = false;
		&#125;
		document.getElementsByName&#40;"filter_zutaten&#91;&#93;"&#41;&#91;0&#93;.options&#91;2&#93;.selected = true;
		document.getElementsByName&#40;"filter_zutaten&#91;&#93;"&#41;&#91;0&#93;.options&#91;3&#93;.selected = true;
   		document.filter.submit&#40;&#41;;
	  &#125; 

Verfasst: 06.04.2006, 12:34
von blinks

Code: Alles auswählen

      for&#40;var i = 0;i < document.getElementsByName&#40;"filter_zutaten&#91;&#93;"&#41;&#91;0&#93;.length;i++&#41;
      &#123;
         document.getElementsByName&#40;"filter_zutaten&#91;&#93;"&#41;&#91;0&#93;.options&#91;i&#93;.selected = false;
      &#125; 
Das funktioniert :) Danke Ixion!