Avatar billede Slettet bruger
16. september 2001 - 23:26 Der er 16 kommentarer og
2 løsninger

Hvorfor virker validering ikke?

Hvordan kan det være at denne kode ikke virker?

Formen sendes bare uden nogen alert...

<script language=\'javascript\'>

function valider (form) {

//test af kategori
if (this.document.soeg[\"kat_id[]\"].length == \'0\')
{
alert (\"\\nDu skal vælge mindst en kategori at søge i.\")
return false;
}
//slut test kategori

  return true;  // alle felter er ordentligt udfyldt
};

</script>

<form name=\"soeg\" onSubmit=\"return valider(this)\" method=\"get\" action=\"markedet.php\">
<p><table cellspacing=\"2\" cellpadding=\"2\" border=\"0\">
<input type=\"hidden\" name=\"send\" value=\"jep\">
<input type=\"hidden\" name=\"valg\" value=\"soeg\">
<TR>
<TD colspan=\"2\">
Vælg hvad du vil søge efter herunder. Klik herefter på \"Søg\". Du behøver ikke at bruge alle søgemulighederne, men det anbefales at være så specifik som muligt.<br></td>
</TR>
    <tr>
    <td align=\"right\">Søgeord:&nbsp;</td>
    <td width=\"100%\"><input type=\"text\" class=\"text\" name=\"soegeord\"></td>
</tr>
<tr>
    <td align=\"right\">Søg&nbsp;i&nbsp;:&nbsp;</td>
    <td><select name=\"type\">
<option value=\"saelges\">Sælges
<option value=\"koebes\">Købes
</select></td>
</tr>
<?PHP
$resultat = mysql_query(\"select * from markedet_kat\");
$antal = mysql_num_rows($resultat);
?>
<tr>
  <td width=\"150\" align=\"right\">Søg&nbsp;i&nbsp;kategorierne:&nbsp;</td><td width=\"100%\"><select name=\"kat_id[]\" multiple size=\"<?PHP echo $antal ?>\">
<?PHP
// Hent først data ud
$resultat = mysql_query(\"select * from markedet_kat\");

// Kør så igennem for hver række
while ($raekke = mysql_fetch_array($resultat)) {
  echo \"<option value=\\\"$raekke[id]\\\">$raekke[overskrift]\";
}
?>
</select></td></tr>
<tr>
<tr>
    <td></td><td><input type=\"image\" src=\"images/soeg.gif\" value=\"søg\" border=\"0\"></td>
</tr>
</form>
</table>

Never mind PHP\'en, det er den select multiple validering jeg ikke kan få til at virke....
Avatar billede nute Nybegynder
16. september 2001 - 23:29 #1
bytt denne linje:

if (this.document.soeg[\"kat_id[]\"].length == \'0\')

ut med denne:

if (document.soeg.kat_id.selectedIndex == \'0\')

/nute
Avatar billede roenving Novice
16. september 2001 - 23:33 #2
Eller rettere:
if (form.soeg.kat_id.selectedIndex == \'0\') <-- og lav parameternavnet om -- så er vi sikre på, at der ikke er nogen, som bli\'r forvirrede
Avatar billede nute Nybegynder
16. september 2001 - 23:33 #3
hov...sorry....fjern \'\' rundt ditt 0 også:

if (document.soeg.kat_id.selectedIndex == 0)
Avatar billede Slettet bruger
16. september 2001 - 23:36 #4
Det duer ikke noget af det i forslå..husk på at min selectbox er navngivet som et array.. (altså [] )
Avatar billede roenving Novice
16. september 2001 - 23:40 #5
Ups ...
Eller rettere:
if (form.kat_id[].selectedIndex == \'0\') <-- og lav parameternavnet om -- så er vi sikre på, at der ikke er nogen, som bli\'r forvirrede
Avatar billede Slettet bruger
16. september 2001 - 23:40 #6
Jeg får (bagefter) en \'document.soeg.kat_id.selectedIndex\' er ikke et object
Avatar billede roenving Novice
16. september 2001 - 23:44 #7
En gang til for Prins Knud ... (Øeh mig!·)

Du har jo formen med som parameter, så den kan du jo starte med.

if (form.kat_id[].selectedIndex == 0)

Nu burde kunne/skulle den virke
Avatar billede nute Nybegynder
16. september 2001 - 23:45 #8
el_barto >> hmmm....å kalle din selectbox for kat_id[] er ikke så godt...kan den heller kun kat_id. Det er ikke noe poeng i å navngi den som om den var en array, for når du requester den, så blir verdiene returnert som en array allikevel. Hvis du så kaller din selectbox kat_id, så vil min første posting fungere...
Avatar billede Slettet bruger
16. september 2001 - 23:46 #9
Dur ikke, væk! Test på www.divxit.dk/nej.html
Avatar billede Slettet bruger
16. september 2001 - 23:50 #10
nute> Nu har jeg omdøbt min selectbox så den ikke er med [] mere, og sat din kode ind..men nu sender den bare uden at validere..
Avatar billede nute Nybegynder
16. september 2001 - 23:52 #11
oki....sett inn denne:

if (document.soeg.kat_id.selectedIndex < 0)

/nute
Avatar billede Slettet bruger
17. september 2001 - 00:00 #12
Tjae..nu virker det, men nu tager min søgefunktion kun det sidste element i array\'et..det var derfor jeg skulle kalde den kat_id[] :)
Avatar billede nute Nybegynder
17. september 2001 - 00:16 #13
el_barto > selv om du setter [] i navnet på din selectbox, så vil den *ikke* være en array !! Du er nødt til å hente hele objektet inn. Skriv om din jsfunksjon til:

<script language=\'javascript\'>

function valider(form) {
    var checked = false;
    var arr = document.soeg.kat_id;
    alert( arr.length );
    for( i=0; i< arr.length; i++ ){
      if( document.soeg.kat_id[i].selected ){
          checked = true;
            break;
        }
    }
   
    if( !checked ){
        alert (\"\\nDu skal vælge mindst en kategori at søge i.\")
        return false;
    }

  return true;  // alle felter er ordentligt udfyldt
}

</script>

/nute
Avatar billede Slettet bruger
17. september 2001 - 00:19 #14
nute> Jeg får altså et array ud af det i PHP...og hvis det er navngivet med [] får man et array i PHP...men prøver lige din kode!
Avatar billede Slettet bruger
17. september 2001 - 00:20 #15
nute> Du kan tjekke http://www.studiestarter.dk/soeg_bolig.php som jeg tidligere har lavet...der virker det sq..
Avatar billede Slettet bruger
17. september 2001 - 00:29 #16
Jeg fik det til at virke..rodede lidt med den gamle kode:

<script type=\"text/javascript\">

function SelectAll(){

if (document.soeg[\"kat_id[]\"].selectedIndex != \'0\')
{
alert (\"\\nDu skal vælge mindst en kategori at søge i.\")
return false;
}
}
</script>

Og så en onclick på submit knappen
Avatar billede Slettet bruger
17. september 2001 - 00:29 #17
men tak for hjælpen... :)
Avatar billede Slettet bruger
17. september 2001 - 00:33 #18
ups...gammel kode..rigtige:

<script type=\"text/javascript\">

function SelectAll(){

if (document.soeg[\"kat_id[]\"].selectedIndex == \'-1\')
{
alert (\"\\nDu skal vælge mindst en kategori at søge i.\")
return false;
}
}
</script>
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