30. maj 2004 - 20:05Der er
11 kommentarer og 1 løsning
sikre at selectbokse ikke kan indeholde det samme!
hej eksperter :)
jeg skal have lavet et system der sikre mig at x antal select-bokse ikke kan have samme værdi...
et eksempel:
selectbox1 har valgmulighederne 1,2,3,4,5,6 og værdien er 1 valgt selectbox2 har valgmulighederne 1,2,3,4,5,6 og værdien er 2 valgt selectbox3 har valgmulighederne 1,2,3,4,5,6 og værdien er 3 valgt selectbox4 har valgmulighederne 1,2,3,4,5,6 og værdien er 4 valgt selectbox5 har valgmulighederne 1,2,3,4,5,6 og værdien er 5 valgt selectbox6 har valgmulighederne 1,2,3,4,5,6 og værdien er 6 valgt
(hvis der er 4 selectbokse i stedet for 6 er det kun værdierne 1,2,3,4 der skal være mulige)
nu vælger jeg så at selectbox4 skal have værdien 5 istedet... så skal værdien i selectbox5 skifte til 4 således at de forskellige selectboxe stadig har forskellig værdi!
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
hvordan kan jeg så udbygge den således at der kan være forskellig antal selectbokse? det kommer ud af en database, hvis du kan lave det i php ville det bar være fedt :D
eller: var setValues = new Array(); function initSelBoxes(frmName) { var frmElm = document.forms[frmName]; for (i=0;i<frmElm.length;i++) { if (frmElm.elements[i].type == "select-one") {setValues[frmElm.elements[i].name] = frmElm.elements[i].selectedIndex;} } } function changeValue(selElm) { selIndex = selElm.selectedIndex; for (i in setValues) { if (setValues[i] == selIndex) { document.forms[selBoxes[0]].elements[i].options[setValues[selElm.name]].selected = true; setValues[i] = setValues[selElm.name]; setValues[selElm.name] = selIndex; break; } } } </script> </head> <body onload="initSelBoxes('form1');">
Hvis du gerne vil undgå at indtaste alle selectbox-navnene. Dette antager dog at scriptet skal gælde for alle selectboxene i formen - om det gør nogen forskel ved jeg dog ikke helt.
jeg tror det er det seneste jeg skrev, som vil gøre det meget lettere at lave det fx i PHP.
Kan dog ikke give et umiddelbart bud på det da jeg ikke kender til din databasestruktur (navnene osv.). Men hvis du går ud fra det seneste jeg lavede, så skal du blot sørge for at alle selectboxene er udstyret med onchange="changeValue(this);" - og så husk at tilføje <body onload="initSelBoxes('form1');"> i starten.
hey fandt lige en fejl: <script type="text/javascript"> var setValues = new Array(); var frmElm; function initSelBoxes(frmName) { frmElm = document.forms[frmName]; for (i=0;i<frmElm.length;i++) { if (frmElm.elements[i].type == "select-one") {setValues[frmElm.elements[i].name] = frmElm.elements[i].selectedIndex;} } } function changeValue(selElm) { selIndex = selElm.selectedIndex; for (i in setValues) { if (setValues[i] == selIndex) { frmElm.elements[i].options[setValues[selElm.name]].selected = true; setValues[i] = setValues[selElm.name]; setValues[selElm.name] = selIndex; break; } } }
samme - men det var bare en fejl i forhold til den anden løsning hvor man ikke behøvede at definere navnene selv. Du skal såmen bare huske at skrive: <body onload="initSelBoxes('form1');">
jeg har fået det til at virke nu... var pga mit php den fejlede lidt :] tak igen
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.