Avatar billede faetter_br Nybegynder
01. oktober 2003 - 15:10 Der er 9 kommentarer og
1 løsning

Validering af variabelt antal selectboxe

Jeg har nedenstående funktion til at checke for, og den samme værdi optræder i mere en 1 af et variabelt antal selectboxe.

Problemet er, at den ikke virker, når antallet af selectboxe kommer over 10.

function tjek(frm) {
temp = ",";
for (i = 0; i < frm.elements.length; i++) {
if (frm.elements[i].type.indexOf("select") == 0) {
val = frm.elements[i].options[frm.elements[i].selectedIndex].value;
if (temp.indexOf("," + val) != -1) {
alert("Du må ikke vælge den samme værdi i to selectbokse!");
return false;
}
temp += "," + val;
}
}
return true;
}

Se eventuelt: http://www.eksperten.dk/spm/300031

På forhånd tak...
Avatar billede skovenborg Nybegynder
01. oktober 2003 - 15:28 #1
har du et link hvor man kan se hvad du gør? Altså siden hvor du bruger scriptet.
Avatar billede faetter_br Nybegynder
01. oktober 2003 - 15:33 #2
Nej, desværre det ligger ikke offentligt..

Men jeg har en række selectboxe, hvori der står nogle værdier. Hvis en af disse værdier er lig med en anden værdi i en anden selectbox, kommer den med alerten. Bare ikke når værdierne er højere en 10. Altså når der er mere end 10 selectboxe...
Avatar billede skovenborg Nybegynder
01. oktober 2003 - 16:24 #3
okay, det bare fordi jeg ikke selv kan se den fejl du nævner. Scriptet begrænser sig heller ikke umiddelbart til 10 select-bokse. Så jeg tænkte fejlen lå et andet sted.
Avatar billede roenving Novice
01. oktober 2003 - 17:04 #4
-- nu har jeg testet din maskine, og den svarer helt korrekt ved 12 dropdowns !-)

-- så som skovenborg angiver må der være andre fejl !-)
Avatar billede faetter_br Nybegynder
02. oktober 2003 - 15:29 #5
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title></title>
</head>

<body>


<script>
function tjek(frm) {
temp = ",";
for (i = 0; i < frm.elements.length; i++) {
if (frm.elements[i].type.indexOf("select") == 0) {
val = frm.elements[i].options[frm.elements[i].selectedIndex].value;
if (temp.indexOf("," + val) != -1) {
alert("Menupunkterne må ikke have den samme værdi");
window.event.returnValue=false;
return false;
}
temp += "," + val;
}
}
return true;
}
</script>



<table cellpadding="2" cellspacing="0"  class="border" width="100%">
<form action="" method="post" name="menuform" onsubmit="tjek(this);">

<tr><td></td>
<td>7</td>

<td align="center">
<select name="nyraekkefolge[]" class="input" style="width: 35px;">
<option value="1"selected>1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option>
</select>
</td>
</tr>
<input type="hidden" name="level_id[]" value="7">

<tr><td></td>
<td>2</td>

<td align="center">
<select name="nyraekkefolge[]" class="input" style="width: 35px;">
<option value="1">1</option><option value="2"selected>2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option>
</select>
</td>
</tr>
<input type="hidden" name="level_id[]" value="2">

<tr><td></td>
<td>3</td>

<td align="center">
<select name="nyraekkefolge[]" class="input" style="width: 35px;">
<option value="1">1</option><option value="2">2</option><option value="3"selected>3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option>
</select>
</td>
</tr>
<input type="hidden" name="level_id[]" value="3">

<tr><td></td>
<td>4</td>

<td align="center">
<select name="nyraekkefolge[]" class="input" style="width: 35px;">
<option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4"selected>4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option>
</select>
</td>
</tr>
<input type="hidden" name="level_id[]" value="4">

<tr><td></td>
<td>5</td>

<td align="center">
<select name="nyraekkefolge[]" class="input" style="width: 35px;">
<option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5"selected>5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option>
</select>
</td>
</tr>
<input type="hidden" name="level_id[]" value="5">

<tr><td></td>
<td>6</td>

<td align="center">
<select name="nyraekkefolge[]" class="input" style="width: 35px;">
<option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6"selected>6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option>
</select>
</td>
</tr>
<input type="hidden" name="level_id[]" value="6">

<tr><td></td>
<td>1</td>

<td align="center">
<select name="nyraekkefolge[]" class="input" style="width: 35px;">
<option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7"selected>7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option>
</select>
</td>
</tr>
<input type="hidden" name="level_id[]" value="1">

<tr><td></td>
<td>8</td>

<td align="center">
<select name="nyraekkefolge[]" class="input" style="width: 35px;">
<option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8"selected>8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option>
</select>
</td>
</tr>
<input type="hidden" name="level_id[]" value="8">

<tr><td></td>
<td>9</td>

<td align="center">
<select name="nyraekkefolge[]" class="input" style="width: 35px;">
<option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9"selected>9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option>
</select>
</td>
</tr>
<input type="hidden" name="level_id[]" value="9">

<tr><td></td>
<td>10</td>

<td align="center">
<select name="nyraekkefolge[]" class="input" style="width: 35px;">
<option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10"selected>10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option>
</select>
</td>
</tr>
<input type="hidden" name="level_id[]" value="10">

<tr><td></td>
<td>11</td>

<td align="center">
<select name="nyraekkefolge[]" class="input" style="width: 35px;">
<option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11"selected>11</option><option value="12">12</option><option value="13">13</option>
</select>
</td>
</tr>
<input type="hidden" name="level_id[]" value="11">

<tr><td></td>
<td>12</td>

<td align="center">
<select name="nyraekkefolge[]" class="input" style="width: 35px;">
<option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12"selected>12</option><option value="13">13</option>
</select>
</td>
</tr>
<input type="hidden" name="level_id[]" value="12">

<tr><td></td>
<td>13</td>

<td align="center">
<select name="nyraekkefolge[]" class="input" style="width: 35px;">
<option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13"selected>13</option>
</select>
</td>
</tr>
<input type="hidden" name="level_id[]" value="13">

<tr>
<td align="center" colspan="3"><br>

<input type="Submit" value="Opdater" class="knap"><br><br></td>
</tr>
</form>
</body>
</html>

Hvis jeg skifter den første selectboks til værdien 13, og skifter selectboks nr. 13 til værdien 1, så alerter den.

Hvis jeg skifter værdien i selectboks nr. 1 til værdien 4, og skifter nr. til til 1, så fejler den ikke.

Hvis i har andre forslag til at lave samme funktionalitet, modtages de gerne..
Avatar billede skovenborg Nybegynder
02. oktober 2003 - 16:17 #6
Hov, du må ikke kalde alle dine selectbokse for nyraekkefolge (og slet ikke med '['). Prøv lige at lave navnene om og se om det ikke skulle hjælpe.
Avatar billede roenving Novice
02. oktober 2003 - 21:20 #7
Du checker ikke grundigt nok ?-)

Hvis du søger efter ,1 efter du har indlagt en ,10 vil der jo være et match, så din kode skal skrives om til:

<script type="text/javascript"><!-- husk at fortælle browseren hvilket script-sprog! -->
function tjek(frm) {
temp = ",";
for (i = 0; i < frm.elements.length; i++) {
if (frm.elements[i].type.indexOf("select") == 0) {
val = frm.elements[i].options[frm.elements[i].selectedIndex].value;
if (temp.indexOf("'"+val+"'") != -1) {
alert("Menupunkterne må ikke have den samme værdi");
window.event.returnValue=false;
return false;
}
temp += ",'" + val + "'";
}
}
return true;
}
</script>
Avatar billede faetter_br Nybegynder
08. oktober 2003 - 10:16 #8
hvis du smider et svar roenving, så får du din velfortjente points
Avatar billede roenving Novice
12. oktober 2003 - 13:38 #9
Undskyld ventetiden ...
-- og velbekomme '-)
Avatar billede roenving Novice
14. oktober 2003 - 03:24 #10
-- og tak for points ;~}
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester