Avatar billede jokkejensen Novice
28. september 2006 - 16:14 Der er 7 kommentarer og
1 løsning

Generelt JS forståelses spørgsmål

Hey..

Problemet drejer sig om hvad der kan køres onload på elementer, og hvordan det egentligt virker.

ex har jeg en nyhedsbrevs tilmeldingsform som andre kunder kan implementere på deres site, og altså kun købe servicen "Nyhedsbrev" af os.. denne har noget JS validering..

Mit mål er at der "ingen" inline JS er i mit markup. og at koden er så "kort" som mulig

Jeg inkludere derfor først et eksternt JS dokument, dette  validering kræver at man skriver noget initialiserende kode, efter input felterne er loaded,

<Kode>
    //This script has to be located below form, and as inline-code.
    //Creating fields
    var o_fields = {
        'Name':{'l':'Name','r':true,'f':'alpha','t':'Newsletter_Name'},
        'Email':{'l':'Email','r':true,'f':'email','t':'Newsletter_Email'}
    }
    //Creating validator
    var tfv = new validator('newsletter_subscription', o_fields, {'to_disable' : ['Submit']});
</Kode>

Dette kode ville jeg gerne være fri for, og tænkte jeg smider det bare i en funktion og kalder den på <form onload=""> og ligger den i samme JS dokument som selve valideringskontrollerns funktioner ligger i. Men det virkede ikke, og pga deadline oprettede jeg endnu en JS fil, og linkede til den under formen..


Men kan det ikke laves som en funktion og køres onload på formen ?

her er lidt Pseudo kode..

Sådan gøres nu
<link src=js>
<form>
<input>
<input>
<submit>
</form>
<script type=js>
//initialiser
</script>

Sådan ønsker jeg det :
<link src=js>
<form onload=initialiser>
<input>
<input>
<submit>
</form>

Mvh
Avatar billede ilflue Nybegynder
28. september 2006 - 17:15 #1
Jeg er ikke sikker på at jeg er med på hvad du gerne vil.
Du vil gerne afvikle javascript når en form er loadet???

<body onload="Noget()"> Det ville da være den nemmeste og mindste måde at gøre det på. Så kan du placere dit javascritp i samme fil, eller i en .js fil.
Avatar billede mclemens Nybegynder
28. september 2006 - 17:50 #2
[ Mit mål er at der "ingen" inline JS er i mit markup. og at koden er så "kort" som mulig ] <form onload=""> <- Det er inline js ligeså snart man kaster en event handler med i et dokument.

[ Sådan ønsker jeg det : ]
Er det ikke at oprette en js fil med indholdet:

    //Creating fields
    var o_fields = {
        'Name':{'l':'Name','r':true,'f':'alpha','t':'Newsletter_Name'},
        'Email':{'l':'Email','r':true,'f':'email','t':'Newsletter_Email'}
    }


og så <form onload="var tfv = new validator('newsletter_subscription', o_fields, {'to_disable' : ['Submit']});">



... ellers hvis du vil have det hele over i et script (og det er ok med window load) så er det måske en javascript fil med dette indhold:


    //This script has to be located below form, and as inline-code.
    //Creating fields
    var o_fields = {
        'Name':{'l':'Name','r':true,'f':'alpha','t':'Newsletter_Name'},
        'Email':{'l':'Email','r':true,'f':'email','t':'Newsletter_Email'}
    }

if(window.addEventListener)window.addEventListener("load", wload, false);
else if(window.attachEvent)window.attachEvent("onload", wload);

function wload(){

    //Creating validator
    var tfv = new validator('newsletter_subscription', o_fields, {'to_disable' : ['Submit']});

}



og så markup:

<link src=js>
<form>
<input>
<input>
<submit>
</form>
Avatar billede mclemens Nybegynder
28. september 2006 - 17:52 #3
Ups...


[ Mit mål er at der "ingen" inline JS er i mit markup. og at koden er så "kort" som mulig ] <form onload=""> <- Det er inline js ligeså snart man kaster en event handler med i et dokument.

[ Sådan ønsker jeg det : ]
Er det ikke at oprette en js fil med indholdet:


--------------------------------------------------------------------------------

    //Creating fields
    var o_fields = {
        'Name':{'l':'Name','r':true,'f':'alpha','t':'Newsletter_Name'},
        'Email':{'l':'Email','r':true,'f':'email','t':'Newsletter_Email'}
    }

var tfv;


--------------------------------------------------------------------------------

og så <form onload="tfv = new validator('newsletter_subscription', o_fields, {'to_disable' : ['Submit']});">


--------------------------------------------------------------------------------

... ellers hvis du vil have det hele over i et script (og det er ok med window load) så er det måske en javascript fil med dette indhold:


--------------------------------------------------------------------------------
    //This script has to be located below form, and as inline-code.
    //Creating fields
    var o_fields = {
        'Name':{'l':'Name','r':true,'f':'alpha','t':'Newsletter_Name'},
        'Email':{'l':'Email','r':true,'f':'email','t':'Newsletter_Email'}
    }

if(window.addEventListener)window.addEventListener("load", wload, false);
else if(window.attachEvent)window.attachEvent("onload", wload);

function wload(){

    //Creating validator
    var tfv = new validator('newsletter_subscription', o_fields, {'to_disable' : ['Submit']});

}

--------------------------------------------------------------------------------

og så markup:

<link src=js>
<form>
<input>
<input>
<submit>
</form>
Avatar billede mclemens Nybegynder
28. september 2006 - 17:54 #4
Ved ikke om tfv skal være global - hvis det er tilfældet skulle det sidste eksempel i ovenstående have været:

  //This script has to be located below form, and as inline-code.
    //Creating fields
    var o_fields = {
        'Name':{'l':'Name','r':true,'f':'alpha','t':'Newsletter_Name'},
        'Email':{'l':'Email','r':true,'f':'email','t':'Newsletter_Email'}
    }

var tfv;


if(window.addEventListener)window.addEventListener("load", wload, false);
else if(window.attachEvent)window.attachEvent("onload", wload);

function wload(){

    //Creating validator
    tfv = new validator('newsletter_subscription', o_fields, {'to_disable' : ['Submit']});

}
Avatar billede mclemens Nybegynder
28. september 2006 - 18:11 #5
[ Problemet drejer sig om hvad der kan køres onload på elementer, og hvordan det egentligt virker. ] Når det i elementet er loadet og elementet er klar i dom køres javascript som er skrevet i onload delen ... Kig evt. på hvilke elementer der understøtter onload inde på http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/events/onload.asp

... Form var vist desværre ikke understøttet - men hvis det er kan du lægge
en 1x1 px img ind lige efter formen og prøve at køre onload på den ...
Avatar billede jokkejensen Novice
05. oktober 2006 - 21:58 #6
Der var mere end rigeligt itl at gå videre med..

tusind tak !

/JJ
Avatar billede mclemens Nybegynder
05. oktober 2006 - 22:17 #7
Ok, her kommer lige et svar :)
Avatar billede mclemens Nybegynder
06. oktober 2006 - 23:30 #8
Tak for point :)
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