Avatar billede weiland Nybegynder
28. januar 2005 - 13:35 Der er 6 kommentarer og
1 løsning

validering af multiple select

Hvordan sikrer jeg mig, at brugeren ikke vælger BÅDE "Alle Amter" og en eller flere af de andre??

<form name=SimpleForm>
  <select name="BeliggenhedAmt" size="4" multiple>
    <option value='0' selected>Alle amter</option>
    <option value='16'>Bornholms Regi...</option>
    <option value='17'>Frederiksberg ...</option>
    <option value='2'>Frederiksborg Amt</option>
  </select>
</form>
Avatar billede ldanielsen Nybegynder
28. januar 2005 - 13:42 #1
Med et loop:

var objSelect = document.SimpleForm.BeliggenhedAmt
var selectOK = false
//selectOK bliver true hvis 1, 2 eller 3 er valgt
for (i=1;i<objSelect.options.length;i++){
  if (objSelect.options[i].selected) selectOK = true
  }

//selectOK bliver false hvis 0 ikke er valgt
if (!objSelect.options[0].selected) selectOK = false
Avatar billede weiland Nybegynder
28. januar 2005 - 13:58 #2
Det ser lovende ud... jeg kan dog ikke umiddelbart få det til at virke ordentligt. Gør jeg noget forkert?

<script>

function ValidateSimpleForm () {

var objSelect = document.SimpleForm.BeliggenhedAmt
var selectOK = false
//selectOK bliver true hvis 1, 2 eller 3 er valgt
for (i=1;i<objSelect.options.length;i++){
  if (objSelect.options[i].selected) selectOK = true
    alert('Du kan ikke vælge både "alle amter" og et andet amt');
  }

//selectOK bliver false hvis 0 ikke er valgt
if (!objSelect.options[0].selected) selectOK = false

}

</script>



<form name=SimpleForm OnSubmit="return ValidateSimpleForm();" action=test.htm method=get>
  <select name="BeliggenhedAmt" size="4" multiple>
    <option value='0' selected>Alle amter</option>
    <option value='16'>Bornholms Regi...</option>
    <option value='17'>Frederiksberg ...</option>
    <option value='2'>Frederiksborg Amt</option>
  </select>
<input type=submit>
</form>
Avatar billede ldanielsen Nybegynder
28. januar 2005 - 14:09 #3
Jeg havde misforstået dig, her skulle den være. Det kan godt laves mere komprimeret, men så bliver det sværere at læse:

<script>

function ValidateSimpleForm () {
var isValid = true;
var objSelect = document.SimpleForm.BeliggenhedAmt


var andetSelected = false
//andetSelected bliver true hvis 1, 2 eller 3 er valgt
for (i=1;i<objSelect.options.length;i++){
  if (objSelect.options[i].selected) andetSelected = true
  }

var alleSelected = false
//alleSelected bliver true hvis 0 er valgt
if (objSelect.options[0].selected) alleSelected = true

if (alleSelected && andetSelected){
  alert('Du kan ikke vælge både "alle amter" og et andet amt');
  isValid = false
  }

return isValid;

}

</script>



<form name=SimpleForm OnSubmit="return ValidateSimpleForm();" action=test.htm method=get>
  <select name="BeliggenhedAmt" size="4" multiple>
    <option value='0' selected>Alle amter</option>
    <option value='16'>Bornholms Regi...</option>
    <option value='17'>Frederiksberg ...</option>
    <option value='2'>Frederiksborg Amt</option>
  </select>
<input type=submit>
</form>

Skal jeg komprimere koden?
Avatar billede weiland Nybegynder
28. januar 2005 - 14:13 #4
Det er ikke nødvendigt, det fungerer jo perfekt :-)
Avatar billede weiland Nybegynder
28. januar 2005 - 14:14 #5
- og tak i øvrigt!
Avatar billede ldanielsen Nybegynder
28. januar 2005 - 14:19 #6
Selvtak
Avatar billede roenving Novice
30. januar 2005 - 13:49 #7
-- og en komprimering, som også letter browserens arbejde:

var andetSelected = false
//andetSelected bliver true hvis 1, 2 eller 3 er valgt
for (i=1;i<objSelect.options.length;i++){
  andetSelected = objSelect.options[i].selected || andetSelected;
}
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