Avatar billede jette1 Nybegynder
14. januar 2002 - 00:13 Der er 5 kommentarer og
1 løsning

Problem med validering af <textarea>

Jeg har problemer med at få validering af et <textarea> -felt til at virke. Jeg vil tjekke at brugeren rent faktisk har skrevet noget, og ikke bare har trykket på mellemrumstasten.

Jeg får denne fejl:

Line:    37
Char:    4
Error:  \'1\' is null or not an object
Code: 0

Problemet lader til at ligge i trim-funktionerne, nærmere betegnet denne variabel: parse[1]
Scriptet virker fortrinligt når det drejer sig om input-felter, men fejlen fremkommer hver gang jeg forsøger at validere et <textarea>

Jeg har i news:dk.edb.internet.webdesign.clientside læst følgende i et indlæg:

\"Men javascript fortolker felt[1] som felt.1, og der findes ingen variable, der hedder felt:

document.form.felt.1 er null eller ikke et objekt.\"

Kan det være det der er problemet?

Håber nogen kan hjælpe .....

Jeg har lavet et eksempeldokument med js-koden som ser således ud:

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<HTML>
<HEAD>
<TITLE>[Ingen titel]</TITLE>
<META NAME=\"Generator\" CONTENT=\"Stone\'s WebWriter 3.5\">
</HEAD>
<BODY>

<form action=\"jscriptTest.html\" name=\"testform\" method=\"post\"
onSubmit=\"return check_all(this.form)\">
<textarea name=\"mintekst\" rows=\"50\" cols=\"50\"></textarea>
<input type=\"submit\" value=\"OK\">
</form>

<SCRIPT language=JavaScript1.2>

function check_text(f) {
  var x = f.value;
  trim(x);
  document.write (x);
  return false;
}

function check_all(f) {
  if (!check_text(document.testform.mintekst)) return false;
  return true;
}

function ltrim( s ) {
  var lpatt = new RegExp( \"^ *(.*)$\" );
  var parse = s.match( lpatt );
  return parse[1];
}

function rtrim( s ) {
  var rpatt = new RegExp( \"^(.*[^ ]) *$\" );
  var parse = s.match( rpatt );
  return parse[1];
}

function trim (string) {
  trimboth = ltrim( rtrim( string ) );
  return trimboth;
}
</script>

</BODY>
</HTML>


Mvh. Jette
Avatar billede nikolajdu Nybegynder
14. januar 2002 - 09:42 #1
document.forms[0].elements[0].value

0´lte form == første form på siden
0´lte element == første element i den form.

Eller noget simplere:

document.testform.mintekst.value

og så lige have feltnavnet med:

function check_text(f) {
  var x = f.mintekst.value;
  trim(x);
  document.write (x);
  return false;
}

eller sende det med fra starten af:

onSubmit=\"return check_all(document.testform.mintekst)\">

/Nikolaj
Avatar billede jette1 Nybegynder
15. januar 2002 - 21:01 #2
Jamen jeg skal jo teste mere end ét felt ... derfor kan jeg ikke henvise til et specifikt formfelt i

onSubmit=\"return check_all(document.testform.mintekst)\"

Jeg bruger jo netop denne funktion...

function check_all(f) {
  if (!check_text(document.testform.mintekst)) return false;
  return true;
}

Til at teste de andre felter med andre funktioner. I det færdige dokument kan check_all f.eks. se således ud:

function check_all(f) {
  if (!check_text(document.testform.mintekst)) return false;
  if (!check_headline(document.testform.headline)) return false;
  if (!check_author(document.testform.author)) return false;
  return true;
}

Så derfor er jeg jo nød til at skrive

onSubmit=\"return check_all(this.form)

Hvordan kommer jeg uden om det?
Avatar billede nikolajdu Nybegynder
08. februar 2002 - 13:09 #3
Hvor er vi nået til?? :))
Avatar billede jette1 Nybegynder
09. februar 2002 - 23:16 #4
Ja, der gik jo kage i spørgsmålet lige pludselig, fordi jeg har skrevet en HTML-kode i spørgsmålets titel :-) ... men nu har de endelig fået det rettet...

Mit problem er jo at trim-funktionerne virker fint på inputfelter med tekst, men når jeg bruger dem på et textarea, går noget galt ... spørgsmålet er bare hvad der går galt...
Avatar billede nikolajdu Nybegynder
16. februar 2002 - 20:56 #5
Jeg læser : "...validering af et <textarea>..."
Du skriver: "Jamen jeg skal jo teste mere end ét felt..."

Se det er jo en fantatisk forklaring.

Kan du hygge dig.
Avatar billede jette1 Nybegynder
16. februar 2002 - 21:19 #6
hmmm, jeg fornemmer lidt sarkasme her ...

Well, vi snakker åbenbart forbi hinanden, så jeg lukker bare.
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