ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
1040
1040
EMPFEHLEN
-
hi, ich bräuchte bitte hilfe:
ich arbeite gerade an einem spielplan für eine fussballliga. pro spieltag darf ein team ja nicht 2 mal spielen.
ich hab genau 6 drop down-menüs, die namen lauten: home11, home21, home31, away11, away21, away31.
in allen diesen menüs stehen zu beginn die 6 gleichen einträge (teams) drinnen:
wenn ich in einem dropdown ein team auswähle, soll dieses dann in den anderen 5 dropdowns nicht mehr verfügbar sein. wie kann ich das programmieren?PHP-Code:<option value="[id team1]">Team 1</option>
...
<option value="[id team6]">Team 6</option>
-
Hi,Schind
kannst es ja mal ausprobieren....sieht auf den ersten Blick etwas
viel aus, dafür erspart es dir das Schreiben der ganzen Listen.
Du musst im Skript nur die ersten beiden Arrays mit deinen Werten füttern
In den Array "spieltage" kommen die Namen,welche bei dir bisher in den
einzelnen <select> stehen,
in den Array "teams", der Text der bisher in den <option>'s Stand...also die Namen der Teams.
Das erste Element des Arrays "teams" ist ein Dummie....da kannst du reinschreiben,
was du willst...was dort steht,erscheint dann in jeder Liste als erster Listeneintrag.
Das ist nötig,weil sonst in den Listen,wenn nix ausgewählt ist, in einigen Browsern das
erste Listenfeld automatisch als 'selected' eingestuft wird.
Wenn weitere Spieltage oder Teams hinzukommen,hänge die jeweiligen Sachen einfach an die
Arrays ran,der Rest geht von alleine.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
<html> <head> <title>Titel</title> </head> <script language="JavaScript" type="text/javascript"> <!-- //Hier die Namen der select-Listen hinein spieltage=new Array('home11','home12','home13','away11','away12','away13'); //Hier die Namen der Teams hinein teams=new Array('____','Team 1','Team 2','Team 3','Team 4','Team 5','Team 6'); auswahl=new Array(); function disable(o) { var htm=""; df=document.formular; if(!o) { for(a=0;a<spieltage.length;++a) { auswahl[a]=0; htm+='<select name="'+spieltage[a]+'"onchange="disable(this)"size="1">\n'; for(b=0;b<teams.length;++b) { v=0;if(b>0){v='[id team'+b+']';}t=teams[b]; htm+='<option value="'+v+'">'+teams[b]+'</option>\n'; } htm+='</select>\n'; } return htm; } else { z=-1; n=o.name; sI=o.selectedIndex; sV=o.options[sI].value; for(s=0;s<spieltage.length;++s) { if(n==spieltage[s]&&z<0) { if(sI==0&&auswahl[s]==0){return;} else{z=s;break;} } } for(s=0;s<spieltage.length;++s) { if(n!=spieltage[s]) { for(x=0;x<df.elements[spieltage[s]].options.length;++x) { if(sI!=0&&df.elements[spieltage[s]].options[x].value==sV) { df.elements[spieltage[s]].options[x]=null; } } if(auswahl[z]!=0) { df.elements[spieltage[s]].options[df.elements[spieltage[s]].options.length]= new Option(auswahl[z][0],auswahl[z][1]); } } } } if(sI==0){auswahl[z]=0;} else{auswahl[z]=new Array(o.options[sI].text,o.options[sI].value);} } //--> </script> <body> <form name="formular"> <script> <!-- //An dieser Stelle erscheinen später die Listen document.write(disable(false)); //--> </script> </form> </body> </html>
-
22.08.03 03:58 #3
- Registriert seit
- Apr 2002
- Ort
- Ingolstadt
- Beiträge
- 2.940
Hallo,
Fatalus hat schon eine sehr sehr schöne Lösung geliefert, meine nur noch als Ergänzung (das ich sie nicht umsonst geschrieben habe
). Auf das dynamische schreiben der Selects ahb ich verzichtet. Bei fragen einfach Posten oder PN an mich...
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
<html> <head> <script type="text/javascript"> /* si = selectedIndex sn = selected Name sl = laenge des Arrays "selects" ssf = selected SelectField sv = selected Value csf = Current SelectField length */ var teams = new Array('x','team1','team2','team3','team4','team5','team6'); var selects = new Array('home11','home21','home31','away11','away21','away31'); function delete_value(si,sn){ var sl = selects.length; var ssf=0; while(sn!=selects[ssf]){ ssf++; } var sv = document.forms[0].elements[ssf].options[si].value; for(x=0;x<sl;x++){ if(x!=ssf){ var csf = document.forms[0].elements[x].length; for(y=0;y<csf;y++){ if(sv==document.forms[0].elements[x].options[y].value){ document.forms[0].elements[x].options[y] = null; break; } } } } } </script> </head> <body> <form name="test"> <select name="home11" onchange="delete_value(this.selectedIndex,this.name)"> <option value="x"></option> <option value="team1">Team 1</option> <option value="team2">Team 2</option> <option value="team3">Team 3</option> <option value="team4">Team 4</option> <option value="team5">Team 5</option> <option value="team6">Team 6</option> </select> <select name="home21" onchange="delete_value(this.selectedIndex,this.name)"> <option value="x"></option> <option value="team1">Team 1</option> <option value="team2">Team 2</option> <option value="team3">Team 3</option> <option value="team4">Team 4</option> <option value="team5">Team 5</option> <option value="team6">Team 6</option> </select> <select name="home31" onchange="delete_value(this.selectedIndex,this.name)"> <option value="x"></option> <option value="team1">Team 1</option> <option value="team2">Team 2</option> <option value="team3">Team 3</option> <option value="team4">Team 4</option> <option value="team5">Team 5</option> <option value="team6">Team 6</option> </select> <select name="away11" onchange="delete_value(this.selectedIndex,this.name)"> <option value="x"></option> <option value="team1">Team 1</option> <option value="team2">Team 2</option> <option value="team3">Team 3</option> <option value="team4">Team 4</option> <option value="team5">Team 5</option> <option value="team6">Team 6</option> </select> <select name="away21" onchange="delete_value(this.selectedIndex,this.name)"> <option value="x"></option> <option value="team1">Team 1</option> <option value="team2">Team 2</option> <option value="team3">Team 3</option> <option value="team4">Team 4</option> <option value="team5">Team 5</option> <option value="team6">Team 6</option> </select> <select name="away31" onchange="delete_value(this.selectedIndex,this.name)"> <option value="x"></option> <option value="team1">Team 1</option> <option value="team2">Team 2</option> <option value="team3">Team 3</option> <option value="team4">Team 4</option> <option value="team5">Team 5</option> <option value="team6">Team 6</option> </select> </form> </body> </html>
ciao Andreas
-
genau so wollt ich das haben

vielen dank an euch beide, jetzt werd ich noch versuchen den code auch zu verstehen.
-
23.09.03 13:49 #5olli engel Tutorials.de Gastzugang
hallo,
mit gnadenloaser erfolglosgkeit versuche ich das script auf meine bedürfnisse zu ändern.
da ich aber null plan von JC habe, hier meine "umbau frage" :
ich habe ein formular um sich bei einem clan-war anzumelden.
jetzt soll dort das spiel und die maps dazu ausgesucht werden via drop down.
wenn jetzt also spiel 1 gewählt wurde sollen nur noch maps von spiel ein zur weiteren auswahl stehen.
ich habe folgendes versucht :
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
<script type="text/javascript"> /* si = selectedIndex sn = selected Name sl = laenge des Arrays "selects" ssf = selected SelectField sv = selected Value csf = Current SelectField length */ var teams = new Array('x','Spiel 1','Spiel 2'); var selects = new Array('home11','home21','home31'); function delete_value(si,sn){ var sl = selects.length; var ssf=0; while(sn!=selects[ssf]){ ssf++; } var sv = document.forms[0].elements[ssf].options[si].value; for(x=0;x<sl;x++){ if(x!=ssf){ var csf = document.forms[0].elements[x].length; for(y=0;y<csf;y++){ if(sv==document.forms[0].elements[x].options[y].value){ document.forms[0].elements[x].options[y] = null; break; } } } } } </script> </head> <body> <form name="test"> <select name="home11" onchange="delete_value(this.selectedIndex,this.name)"> <option value="x">Select</option> <option value="Spiel 1">Spiel 1</option> <option value="Spiel 2">Spiel 2</option> </select> <select name="home21" onchange="delete_value(this.selectedIndex,this.name)"> <option value="x">Select</option> <option value="Spiel 1">Spiel 2 Map 1</option> <option value="Spiel 1">Spiel 2 Map 2</option> <option value="Spiel 2">Spiel 1 Map 1</option> <option value="Spiel 2">Spiel 1 Map 2</option> </select> <select name="home31" onchange="delete_value(this.selectedIndex,this.name)"> <option value="x">Select</option> <option value="Spiel 1">Spiel 2 Map 1</option> <option value="Spiel 1">Spiel 2 Map 2</option> <option value="Spiel 2">Spiel 1 Map 1</option> <option value="Spiel 2">Spiel 1 Map 2</option> </select> </form>
damit versuchte ich das ganze umzudrehen. also "spiel 1" wird gewählt und alles mit dem value "spiel 1" wird ausgeblendet.
soweit so gut, aber leider blendet er nur das erste value aus "<option value="Spiel 1">Spiel 2 Map 1</option>" nummer 2 "<option value="Spiel 1">Spiel 2 Map 2</option>" bleibt stehen. auch sonst fliegt mir das script wegen der doppelten values nur noch um die ohren.
kann mir einer von euch da weiterhelfen ?
danke und gruß, oliver
leider führt das zu keinem erfolg.
-
Das Problem ist das "break;" in der Schleife...der Durchlauf derselben wird dann abgebrochen....
dadurch dann die andere Option nicht mehr entfernt.
Das pure Entfernen des break's reicht auch nicht,dann gäbe es einen Fehler,weil du die Anzahl der
Optionen verringerst,und in der Schleife dann auf nicht vorhandene Optionen zugreifen willlst.
Die Lösung....die Optionen vom Ende her durchlaufen,dann kannst du sie problemlos entfernen.
Es gibt aber noch ne andere Sache,die dabei nnicht hinhaut....sobald du die Optionen entfernst,
sind sie komplett weg...will man sich für ein anderes Spiel entscheiden,bekommt man die Optionen
dafür nicht mehr zurück.
Und das mit den doppelten values...fürs Skript ist das kein Problem,aber es macht keinen Sinn.
Wenn bspw.[Spiel 2 Map 1] und [Spiel 2 Map 2] bekommst du auf der Zielseite nicht mehr heraus,
welche Map nun gewählt wurde.....daher brauchst du unterschiedliche values.
Ich habs mal soweit verändert,dass diese Sache behoben sind.
Die entfernten Optionen werden dabei in Arrays zwischengelagert....und halt unterschiedliche Values,
jeweils nach dem Schema "s[Spielnummer]_m[Mapnummer]"
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
<html> <head> <script type="text/javascript"> <!-- var lists=new Array(); lists['home11']=false; lists['home21']=new Array(); lists['home31']=new Array(); function delete_value(o) { var FRM=document.test; vv=o.options[o.options.selectedIndex].value; vv=vv.split('_');vv=vv[0]; for(var k in lists) { if(!lists[k]) { for(i=0;i<FRM.elements[k].options.length;++i) { if(FRM.elements[k].options[i].value==vv) { FRM.elements[k].options[i].selected=true; break; } } } else { for(i=0;i<lists[k].length;++i) { FRM.elements[k].options[FRM.elements[k].options.length]=lists[k][i]; } lists[k].length=0; for(i=FRM.elements[k].options.length-1;i>=0;--i) { xV=FRM.elements[k].options[i].value; xV=xV.split('_');xV=xV[0]; if(xV!=vv&&xV!='x'&&vv!='x') { lists[k][lists[k].length]= new Option(FRM.elements[k].options[i].text,FRM.elements[k].options[i].value); FRM.elements[k].options[i]=null; } } } } } //--> </script> </head> <body> <form name="test"> <select name="home11" onchange="delete_value(this)"size="6"> <option value="x">Select</option> <option value="s1">Spiel 1</option> <option value="s2">Spiel 2</option> </select> <select name="home21" onchange="delete_value(this)"size="6"> <option value="x">Select</option> <option value="s2_m1">Spiel 2 Map 1</option> <option value="s2_m2">Spiel 2 Map 2</option> <option value="s1_m1">Spiel 1 Map 1</option> <option value="s1_m2">Spiel 1 Map 2</option> </select> <select name="home31" onchange="delete_value(this)"size="6"> <option value="x">Select</option> <option value="s2_m1">Spiel 2 Map 1</option> <option value="s2_m2">Spiel 2 Map 2</option> <option value="s1_m1">Spiel 1 Map 1</option> <option value="s1_m2">Spiel 1 Map 2</option> </select> </form> </body> </html>
Ähnliche Themen
-
Value von Drop Down Menüs
Von campino12 im Forum Javascript & AjaxAntworten: 0Letzter Beitrag: 21.10.09, 08:09 -
drop down menüs
Von meiner0815 im Forum HTML & XHTMLAntworten: 5Letzter Beitrag: 02.03.06, 14:51 -
Drop-Down mit gleicher länge
Von BFreakout im Forum CSSAntworten: 1Letzter Beitrag: 28.09.04, 13:31 -
Drop Down Menüs, Checkboxen und anderes ...
Von SSJSon-Goten im Forum PHPAntworten: 10Letzter Beitrag: 24.09.02, 20:24 -
CSS und Drop Down Menüs
Von LuPuZ im Forum CSSAntworten: 5Letzter Beitrag: 25.03.02, 17:31





Zitieren
Login





