Avatar billede living8671 Nybegynder
25. oktober 2006 - 22:26 Der er 34 kommentarer og
1 løsning

Problemer med javascript til validering af tekstfelter

Hej Eksperter,

Har lavet en lille konkurrence-ting til mit site, som bl.a indeholder et javascript der skal checke at form-felterne på konkurrence siden, er udfyldt "korrekt" eller i det mindste ikke er blanke mv.
Svarene bliver efterfølgende sendt via PHP til serveren.
Jeg modtager alle svarene helt perfekt - emn selve valideringen fungerer ikke - så jeg modtager desværre også mange blanke svar, og svar der mangler indhold i felter.
Er der nogen der kan gennemskue hvad jeg har lavet galt?

- Mvh / Thomas
(jeg har med vilje erstattet vitale data med en række XXXXX)

<script language="javascript">


function FormCheck(chk)
{
if (chk.value.indexOf('--',0)==0)
  { chk.value = ''; }
}
function LastCheck(chk)
{
error = false;
if ((chk.answer.value == "") || (chk.answer.value.indexOf('--',0)==0))
    {
    error = true;
    err_txt = "Husk at vælge et svar!";
    chk.answer.focus();
    }
if ((chk.name.value == "") || (chk.name.value.indexOf('--',0)==0) && (!error) )
    {
    error = true;
    err_txt = "Dit navn skal angives!";
    chk.name.focus();
    }
if ((chk.x1.value == "") || (chk.x1.value.indexOf('--',0)==0) && (!error) )
    {
    error = true;
    err_txt = "Dit firma skal angives!";
    chk.x1.focus();
    }
if ((chk.x2.value == "") || (chk.x2.value.indexOf('--',0)==0) && (!error) )
    {
    error = true;
    err_txt = "Din firma adresse skal angives!";
    chk.x2.focus();
    }
if ((chk.x3.value == "") || (chk.x3.value.indexOf('--',0)==0) && (!error) )
    {
    error = true;
    err_txt = "Dit postnr./by skal angives!";
    chk.x3.focus();
    }
if ( (chk.email.value.indexOf("@") == -1) || (chk.email.value == "") && (!error) )
    {
    error = true;
    err_txt = "Benyt venligst en gyldig Email adresse!!";
    chk.email.focus();
    }
if (error)
    {
    alert(err_txt);
    return false;
    }
    else
    {
    alert("Vi har nu modtaget din henvendelse - du hører fra os snarest muligt");
    return true;
    }
}

</script>

<html>

<head>
<meta http-equiv="Content-Language" content="da">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>XXXXXX</title>
<link href="form_css.css" rel="stylesheet" type="text/css">
</head>

<body bgcolor="#000000">
<div align="center">
<center>
<p></p>
</div>
<div align="center">
<center>
<table border="0" width="376" cellspacing="0" cellpadding="0">
<tr>
<td width="100%">
<form method="POST" action="XXXXXX.php">
<p align="center"><b><font color="#C0C0C0" face="Verdana" size="4">
SPØRGSMÅL?<br>
</font><font color="#C0C0C0" face="Verdana" size="1"><br>
</font> </b>
<select name="answer" size="1" class="formelementer">
<option>SVAR1</option>
<option>SVAR2</option>
<option>SVAR3</option>
<option selected value="-- v&aelig;lg dit svar her --">-- v&aelig;lg dit svar her --</option></select></p>
<p align="center"><font color="#C0C0C0" face="Verdana" size="1"><b>NAVN:<br></b></font>
<input name="name" type="text" class="formelementer" size="31">
<br>
<font color="#C0C0C0" face="Verdana" size="1"><b>ADRESSE:</b></font><br>
<input name="X2" type="text" class="formelementer" size="31">
<br>
<font color="#C0C0C0" face="Verdana" size="1"><b>POST NR. + BY:</b></font><br>
<input name="X3" type="text" class="formelementer" size="31">
<br>
<font color="#C0C0C0" face="Verdana" size="1"><b>EMAIL:<br>
</b></font>
<input name="email" type="text" class="formelementer" size="20">
</p>
<p align="center">
<input name="submit" type="submit" class="formelementer" value="SEND">
<input name="B1" type="reset" class="formelementer" value="SLET ALT">
</p>
<input type="hidden" name="returnurl" value="http://www.XXXXXX/tak.html">
<input type="hidden" name="quizid" value="XXXXXX">
</form>
<p align="center"><font face="Verdana" size="1" color="#C0C0C0"><b>TAK FORDI DU VIL VÆRE MED<br>
<br>
<br>
MED VENLIG HILSEN<br>
<br>
XXXXXX</b></font></td>
</tr>
</table>
</center>
</div>
</body>
</html>
Avatar billede jl4511 Nybegynder
25. oktober 2006 - 23:02 #1
Du skulle måske prøve at kalde din javascript funktion :-)
Avatar billede jl4511 Nybegynder
25. oktober 2006 - 23:13 #2
Iøvrigt kan jeg henvise til denne tråd:
http://www.eksperten.dk/spm/736931
Avatar billede living8671 Nybegynder
25. oktober 2006 - 23:23 #3
øhh, jeg er lidt ude af fokus her...kan du pille et eksempel ud af min "kode" - for det her er bestemt ikke hjemmebane for mig
Avatar billede roenving Novice
26. oktober 2006 - 00:14 #4
<script type="text/javascript">
function LastCheck(f){
var txt = "", fjl=null;
if (f.answer.value == "" || f.answer.value.indexOf('--')==0)){
    txt += "Husk at vælge et svar!\n";
    fjl = f.answer;
}
if (f.name.value == ""){
    txt += "Dit navn skal angives!\n";
    if(!fjl)
      fjl = f.name;
}
if (f.x1.value == ""){
    txt += "Dit firma skal angives!\n";
    if(!fjl)
      fjl = f.x1;
}
if (f.x2.value == ""){
    txt += "Din firma adresse skal angives!\n";
    if(!fjl)
      fjl = f.x2;
}
if (f.x3.value == ""){
    txt += "Dit postnr./by skal angives!\n";
    if(!fjl)
      fjl = f.x3;
}
if (f.email.value.indexOf("@") == -1 || f.email.value == ""){
    txt += "Benyt venligst en gyldig Email adresse!!\n";
    if(!fjl)
      fjl = f.email;
}
if (fjl){
    alert("Fejl i formularen!\nFølgende fejl er registreret:\n\n"+txt);
    fjl.focus();
    return false;
}
alert("Vi har nu modtaget din henvendelse - du hører fra os snarest muligt");
return true;
}

</script>

-- og:

<form method="POST" action="XXXXXX.php" onsubmit="return LastCheck(this);">
Avatar billede living8671 Nybegynder
26. oktober 2006 - 00:33 #5
virker ikke, glider stadig bare igennem uden nogen form for check af felter...!
Skal der ikke stå noget på input-linierne? onClick="Javascript...bla bla bla - eller hva?
Avatar billede roenving Novice
26. oktober 2006 - 01:01 #6
-- nej, det er nok (og den eneste mulighed !-), at du kalder den med onsubmit-eventet på form-tagget !o]

Prøv at linke til et eksempel, hvor det ikke virker !-)
Avatar billede living8671 Nybegynder
26. oktober 2006 - 13:54 #7
Virker ikke - jeg er sikker på at der ligger en banal fejl og lurer et sted :)
Kig her: http://www.thomas-rasmussen.com/testscript/

Mvh
-Thomas
Avatar billede living8671 Nybegynder
27. oktober 2006 - 20:37 #8
Nogen der kan hjælpe med det sidste?
Avatar billede roenving Novice
27. oktober 2006 - 23:31 #9
Tjah, en parantes-slut i overskud !-)

if (f.answer.value == "" || f.answer.value.indexOf('--')==0 ){
Avatar billede roenving Novice
27. oktober 2006 - 23:33 #10
-- i øvrigt viser siden ikke noget hos mig, da jeg aldrig accepterer aktivt indhold, men så åbnede jeg jo bare http://www.thomas-rasmussen.com/testscript/form.html direkte !-)
Avatar billede living8671 Nybegynder
28. oktober 2006 - 00:15 #11
Har rettet den linie du påpeger - men uden at opnå det ønskede resultat....har du andre forslag?
Avatar billede erikjacobsen Ekspert
28. oktober 2006 - 00:22 #12
Du har vel ikke et felt der hedder 'x1' ?
Avatar billede living8671 Nybegynder
28. oktober 2006 - 00:25 #13
jo, der er et felt ved navn 'x1'
Avatar billede living8671 Nybegynder
28. oktober 2006 - 00:27 #14
....og dog ... der er ikke et felt ved navn ´x1' - min fejl. Skal jeg fjerne den del af scriptet?
Avatar billede erikjacobsen Ekspert
28. oktober 2006 - 00:27 #15
Avatar billede erikjacobsen Ekspert
28. oktober 2006 - 00:29 #16
Ja, du kan jo se, når du afvikler scriptet, at du får en fejl på det.
Avatar billede living8671 Nybegynder
28. oktober 2006 - 00:32 #17
Virker stadig ikke. Har fjernet 'x1' delen i scriptet - men uden held til at det løser problemet.
Avatar billede erikjacobsen Ekspert
28. oktober 2006 - 00:35 #18
Men du skal jo bare se på de fejl, som din browser viser dig. Nu har du ikke et felt ved navn x2.
Avatar billede roenving Novice
28. oktober 2006 - 00:42 #19
f.x2 og name ="X2" er ikke det samme, du skal vælge enten store eller små bogstaver !-)
Avatar billede living8671 Nybegynder
28. oktober 2006 - 00:42 #20
Jeg kan ikke nå at se hvad min browser skriver af fejl, før den bare går videre og skriver "Done" ...
Men jeg har et felt ved navn 'x2' - det kan du jo se ovenfor i min kode!!! Samt i sourcen på min konkurrence vidue
Avatar billede erikjacobsen Ekspert
28. oktober 2006 - 00:45 #21
Men det er da ikke særlig smart at lave kode, og ikke kunne se hvad der bliver rapporteret af fejl. Det skal du da have lavet om på.

Nej, jeg kan ikke se et felt med navn 'x2'.

Det kan selvfølgelig være du mener det du kalder 'X2' - men det er noget ganske andet for javascript.
Avatar billede living8671 Nybegynder
28. oktober 2006 - 00:47 #22
Ahhhhh shit(undskyld)hvor dum en fejl... nu virker alt...næsten, dog skriver den stadig fejl ved mine svarmuligheder ... check siden, fyld ud og se hvad der sker...
Avatar billede erikjacobsen Ekspert
28. oktober 2006 - 00:48 #23
Hvad er det der ikke virker nu ?
Avatar billede living8671 Nybegynder
28. oktober 2006 - 00:51 #24
Den melder fejl i mit svar (fanebladet) ! Uanset hvilket svar jeg vælger, så acceptere den ikke mit valg. Den tror at jeg mangler at foretage et valg
Avatar billede erikjacobsen Ekspert
28. oktober 2006 - 00:52 #25
Faneblad? Sådan et kan jeg ikke se.
Avatar billede living8671 Nybegynder
28. oktober 2006 - 00:53 #26
Sorry - mener rullegardin (det er sent - tilgiv mig)
Avatar billede erikjacobsen Ekspert
28. oktober 2006 - 00:57 #27
Du mener at du får fejlen "Husk at vælge et svar!\n" ?  Det kan være det sker i din browser. Nu har du jo heller ikke angivet en value i dine <option> tags. Jeg kan ikke huske om der er browsere der kløjs i det. Og får år tilbage var der browsere der ikke forstod value i select-tags, så jeg tager altid udgangspunkt i selectedIndex.
Avatar billede erikjacobsen Ekspert
28. oktober 2006 - 00:58 #28
Ja, mener: "Og for år tilbage..."
Avatar billede living8671 Nybegynder
28. oktober 2006 - 01:03 #29
Yup - det er præcis den fejl jeg mener. Har du forslag til hvor koden til rullegardinet evt. kan se ud for at det kommer til at virke? we are so close :)
Avatar billede living8671 Nybegynder
28. oktober 2006 - 01:04 #30
hvor=hvordan :)
Avatar billede erikjacobsen Ekspert
28. oktober 2006 - 01:12 #31
Du kan jo starte som jeg skriver før, med at sætte en value på dine <option>-tags.
Avatar billede living8671 Nybegynder
28. oktober 2006 - 01:17 #32
Yes, så virker det - tusinde gang tak, sikke et marreridt :) Smid et svar så du kan få nogle fortjente point.
Avatar billede erikjacobsen Ekspert
28. oktober 2006 - 01:18 #33
Jeg samler slet ikke på point, tak.

Men se nu at få din browser til at give dig fejlene. Og brug så alerts til debugging. Havde du en
  alert(f.answer.value);
så havde du nok haft en idé om hvad der var galt.
Avatar billede living8671 Nybegynder
28. oktober 2006 - 01:20 #34
Du har så evigt ret :) af hjertet tak
Avatar billede living8671 Nybegynder
28. oktober 2006 - 01:26 #35
Øh, tak for pointene - en lidt uvant situation, men tak.
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