Avatar billede webdb Nybegynder
01. januar 2004 - 12:51 Der er 6 kommentarer

- has no properties

Jeg har en alm. html form med name=frmLogin og id=frmLogin
og i denne form haves et felt name=password id=password

ved tryk på en knap køres et javascript der checker længden af dette password felt og hvis det er på mindst 6 tegn, så document.frmLogin.submit()

Det virker fint i explorer, men netscape 6.1 javascript console skriver Error:
document.frmLogin.password has no properties

Hvad skyldes at man får en fejlmeddelelse om at et felt ikke har nogen properties ?
Avatar billede erikjacobsen Ekspert
01. januar 2004 - 12:57 #1
En fejl måske. Har du mere kode?
Avatar billede webdb Nybegynder
01. januar 2004 - 13:15 #2
Form'en bliver lavet via innerHTML:

document.getElementById('loginbox').innerHTML = "<form method=POST id='frmLogin' name='frmLogin' action='login.asp'><input name='loginUrl' type='hidden' class=square size=15 value='<%=thisUrl%>'>Email:<br><input style='width:120px' class=square maxlength=40 id='email' name='email' value='<%=request.cookies("oadk")("email")%>'><br>Password:<br><input class=square type=password style='width:65px' maxlength=20 id='password' name='password' value='<%=request.cookies("oadk")("password")%>'> <input class=button type='button' value='Login' onClick='java script: login();'><br><input type='checkbox' name='rememberlogin' <%=request.cookies("oadk")("remember")%>> <a href='#' onClick='java script: checkremember();'>Husk login</a> ?<br><a href='/global/default.asp?show=lostpassword'>Glemt password ?</a><br><a href='/info/opret_ny.asp'>Opret ny bruger</a></form>";

ovenstående er en function der kaldes onLoad af page.

I en HTML tabel haves:
<span id=loginbox></span>

Der gives error i netscape ved tryk på knappen Login,
når denne function kaldes: onClick='java script: login();

    function login() {
    var themessage = "Login info er ikke korrekt:\n\n";
   
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(document.frmLogin.email.value)){}
    else{themessage = themessage + "- check din emailadresse\n";}
   
    if (document.frmLogin.password.value.length < 6 ) {
    themessage = themessage + "- dit password skal være på min. 6 tegn\n";
    }

    if (themessage == "Login info er ikke korrekt:\n\n") {
   
        document.frmLogin.submit();
    }
    else {
        alert(themessage);
    return false;
    }
    }
Avatar billede erikjacobsen Ekspert
01. januar 2004 - 13:21 #3
Det skulle ikke undre mig om den korrekt Document Object Model kræver
at man skal skrive noget meget for at få adgang til en form i en iframe.
Giv iframen et navn og prøv med
  document.iframensnavn.formensnavn.feltetsnavn.value
Avatar billede webdb Nybegynder
01. januar 2004 - 13:27 #4
- der er ikke nogen iframe inblandet.
det er én og samme side det hele
Avatar billede erikjacobsen Ekspert
01. januar 2004 - 13:49 #5
Nå nej - men er det kun i NS 6? Jeg synes ikke jeg ellers kan reproducere fejlen.
Avatar billede olebole Juniormester
01. januar 2004 - 19:57 #6
<ole>

Prøv at skrive:
function login() {
    alert( document.getElementById('loginbox').innerHTML );
  // ... og resten af din funktion ...

Så kan du se, om dit password-felt overhovedet eksisterer, når login() bliver kaldt. Der er ikke noget galt med dine referencer, så der må være en fejl et andet sted ... prøv at lægge en URL til siden.

I øvrigt skal du aldrig bruge 'java script:' i en event-handler. Det er helt forkert brug af JavaScript-pseudo-protokollen - som stort set kun bruges i et links 'href' - ligesom (og i stedet) for 'http:' eller 'mailto:'.
/mvh
</bole>
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