Avatar billede jette1 Nybegynder
29. august 2001 - 23:02 Der er 5 kommentarer og
1 løsning

Formular problem...

Når feltet \"fnavn\" mister focus, får jeg en \"f.navn.value is null or not an object\" .. og jeg forstå ikke hvorfor.

<form action=\"noget.php\" method=\"post\" name=\"opret_ny\">
<input class=\"field\" type=\"text\" name=\"fnavn\" size=\"20\" maxlength=\"20\" tabindex=\"1\" onBlur=\"check_fnavn(this)\">
<input type=\"submit\" name=\"submit\" \"tabindex=\"5\" value=\"OK\">
</form>

<SCRIPT language=JavaScript1.2>
function check_fnavn(f) {
  var x = f.fnavn.value
 
  if (!x) {
    alert(\"Du skal indtaste dit fornavn\");
    f.fnavn.focus();   
    return false;
  }
  else if (x) {
    var x = x + \"q\";
    if (trim(x) == \"q\") {
        alert(\"Du skal indtaste dit fornavn\");
        f.fnavn.focus();       
    }
    return false;
  }
  else {
    return true;
  }   
}
</SCRIPT>
Avatar billede jakoba Nybegynder
29. august 2001 - 23:15 #1
Du bruger f somom det var form objektet, men det er form elementet fnavn.
Brug  this.form  istedet for blot  this .
<input class=\"field\" type=\"text\" name=\"fnavn\" size=\"20\" maxlength=\"20\" tabindex=\"1\" onBlur=\"check_fnavn(this.form)\">
Avatar billede hoejrup Nybegynder
29. august 2001 - 23:16 #2
document.form.email.focus();

Der skal altid stå document foran, derefter navnet på formen. Som i dit tilfælde er name=\"f\".

/per
Avatar billede olebole Juniormester
30. august 2001 - 01:24 #3
<ole>
Nej, hoejrup - for hans kald, der ligger i input-elementet, hedder:
  onBlur=\"check_fnavn(this)\".
\'this\' refererer til elementet, det ligger i. Derfor refererer \'f\' oppe i funktionen altså også direkte til elementet.
Han kunne gøre, som jakoba skriver - eller han kunne beholde sit oprindelige kald og så skrive om i funktionen. Hvor der står \'f.fnavn\' skal der blot stå \'f\'.
Man kan argumentere for og imod de to måder at referere på. Jakoba\'s er mere \'generisk\' - sådan at forstå, at han lettere vil kunne udvide funktionen til også at behandle andre formelementer, der måtte blive ønsket på et senere tidspunkt.
Min metode en anelse slankere og - finder jeg - mere \'sexy\'. Hvis man er \'sikker\' på, funktionen ikke skal udvides senere, synes jeg, min måde er lidt mere elegant. Det handler dog i høj grad om \'kode-skoler\' og æstetik - krydret med lidt religion - om man holder strikt på, at det generiske ubetinget og altid vejer tungest  :)
/mvh



</bole>
Avatar billede jakoba Nybegynder
30. august 2001 - 01:28 #4
Jeg må indrømme at min begrundelse er mere prosaisk. Ved at ændre til this.form  slipper vi for at ændre mere end eet sted, det giver større chance for at det lykkes :-))

mvh JakobA
Avatar billede olebole Juniormester
30. august 2001 - 02:10 #5
*LooOooL*
Nuvel, det er dog en ofte forekommende diskussion. Jeg har sågar netop siddet med et eksempel idag på arbejdet. Der havde jeg troet mig \'sikker\' - meeeen så skulle der alligevel ske noget senere, som krævede en reference til et form-element, funktionen ikke kendte, men som den ville kunne finde, hvis den kendte form-objektet. Altså var der pludselig et par kald og en hel del referencer, der skulle ændres. Det var nok det, der inspirerede mig til denne gang script-filosofiske prosa  =o)
/mvh
Avatar billede hoejrup Nybegynder
30. august 2001 - 10:59 #6
olebole> Ok, så Jette1 er en han! Jeg har altid anvendt document, men nu er jeg blevet lidt klogere. Mange tak ole.

/per
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