15. juli 2001 - 02:31Der er
10 kommentarer og 3 løsninger
Sammenskrivning af to javascripts + mulighed for tryk på enter
Hey alle, Jeg siddr her med to java script som tjekker for to forskellige ting. De skulle gerne skrives sammen til et enkelt! Så det både tjekker for at alle felter er udfyldt og at emailen er nogenlunde rigtig! Her er de:
<HTML> <HEAD> <TITLE>Denne tester for udfylte felter</TITLE> <SCRIPT LANGUAGE=JavaScript> function IsFormComplete(FormName) { var x = 0 var FormOk = true
<HTML> <HEAD> <TITLE>Denne tester for email addresse</TITLE>
<SCRIPT LANGUAGE=JavaScript>
function IsEmailValid(FormName,ElemName) { var EmailOk = true var Temp = document.forms[FormName].elements[ElemName] var AtSym = Temp.value.indexOf(\'@\') var Period = Temp.value.lastIndexOf(\'.\') var Space = Temp.value.indexOf(\' \') var Length = Temp.value.length - 1 // Array is from 0 to length-1
if ((AtSym < 1) || // \'@\' cannot be in first position (Period <= AtSym+1) || // Must be atleast one valid char btwn \'@\' and \'.\' (Period == Length ) || // Must be atleast one valid char after \'.\' (Space != -1)) // No empty spaces permitted { EmailOk = false alert(\'Dette ligner ikke en gyldig email!\') Temp.focus() } return EmailOk }
Skrevet sammen i 1 HTML dokument, jeg regner med at det er det du skal bruge...
<HTML> <HEAD> <TITLE>Denne tester for udfylte felter</TITLE> <SCRIPT LANGUAGE=JavaScript> function IsFormComplete(FormName) { var x = 0 var FormOk = true
while ((x < document.forms[FormName].elements.length) && (FormOk)) { if (document.forms[FormName].elements[x].value == \'\') { alert(\'Du mangler at udfylde \'+document.forms[FormName].elements[x].name +\'! Prøv igen\') document.forms[FormName].elements[x].focus() FormOk = false } x ++ } return FormOk }
function IsEmailValid(FormName,ElemName) { var EmailOk = true var Temp = document.forms[FormName].elements[ElemName] var AtSym = Temp.value.indexOf(\'@\') var Period = Temp.value.lastIndexOf(\'.\') var Space = Temp.value.indexOf(\' \') var Length = Temp.value.length - 1 // Array is from 0 to length-1
if ((AtSym < 1) || // \'@\' cannot be in first position (Period <= AtSym+1) || // Must be atleast one valid char btwn \'@\' and \'.\' (Period == Length ) || // Must be atleast one valid char after \'.\' (Space != -1)) // No empty spaces permitted { EmailOk = false alert(\'Dette ligner ikke en gyldig email!\') Temp.focus() } return EmailOk }
Det giver to forms.... Den skulle gerne bare teste emailen i den første fom efter at den har testet at alle felter er udfyldt. Min fomulerin var måske ikke helt klar.... sorry! Er det mere forståeligt nu?
Jo... vi nærmer os! Email feltet virker fint. Men hvis man udfylder det, er den lige glad med om resten af felterne er udfyldt... Prøv lige at tjekke det igen. Og enter/return virker også! så vi er der næsten;)
så skal de bare kædes sammen i samme function (f.eks. en afsendelses function) som tjekker at begge betingelser er opfyldt. Det skulle jeg faktisk have gjort fra start, men det bliver ikke nu for mit vedkommende :-( Jeg vil gå i seng, jeg kan næsten ikke se ud af øjnene mere...
Noget unfair at møve sig ind efter theartisk har gjort hele forarbejdet, så for at fortjene nogen af pointsene har jeg rettet et par steder :)
<HTML> <HEAD> <TITLE>Denne tester for udfylte felter</TITLE>
<script language=\"javascript\">
function IsFormComplete( form ) { // tester om alle felter er udfyldt var x = 0; var FormOk = true;
while ((x < form.elements.length) && (FormOk)) { if ( form.elements[x].value == \'\') { alert(\'Du mangler at udfylde \'+form.elements[x].name +\'! Prøv igen\'); form.elements[x].focus(); FormOk = false; }; x ++ }; return FormOk; // true hvis alle felter er udfyldt. };
function gyldigEmail(email) { // tester for lovlig emailadresse. if ( email == \"\" ) return false; // felt ikke udfyldt
var ugyldigeTegn = \"/:,;\" for (i=0; i<ugyldigeTegn.length; i++) { fejlTegn = ugyldigeTegn.charAt(i) if ( email.indexOf(fejlTegn,0) > -1 ) return false // felt indeholdet ulovligt tegn };
var paaPos = email.indexOf(\"@\",1); if ( paaPos == -1 ) return false; // der er ikke er noget \"@\"-tegn if ( email.indexOf(\"@\",paaPos+1) != -1 ) return false; // der er mere end et \"@\"-tegn
var punktumPos = email.indexOf(\".\",paaPos); if ( punktumPos == -1 ) return false; // der er ikke noget \".\"-tegn efter \"@\"-tegnet var pPos2 = email.lastIndexOf(\".\",paaPos); if ( pPos2 +4 < email.length || pPos2 +3 > email.length ) return false; // mere end 4 eller færre end 2 bogstaver efter sidste \".\" // test ovenfor ændret så fx \"navn@vip.cybercity.dk\" er lovlig
return true; // email adresse er lovlig };
function afsendelse(form) { // tester om formilar et korrekt udfyldt if ( !IsFormComplete( form ) ) return false; // formen indeholder et tomt felt if ( !gyldigEmail(form.email.value) ) { alert(\"fejl i e-mail feltet - på den igen\"); form.email.focus(); form.email.select(); return false; // email adressen er ulovlig }; return true // alt er OK; }; </script>
jakoba>> det er bare helt OK - og det virker jo :-)
Men må jeg høre om en lille ting, hvorfor sætter du semikolon \";\" efter alle dine tuborg lukninger (det elsker jeg at sige), der er garanteret en smart årsag hvis jeg kender dig ret og den vil jeg da meget gerne beriges med.
Du har helt ret i at det ikke er nødvendigt i Javascript. Men det var det i ALGOL og PASCAL som jeg startede med for mange år siden, så nu bliver jeg ved med det, dels af vane, dels fordu jeg bruger semikolonnet til at fortælle mig selv at \"her slutter en sætningsstruktur\".
mvh JakobA
PS: personligt foretrækker jeg nu tuborg åbminger :-))
OK, det er sådan det hænger sammen, jamen så vil jeg ikke revolutionere mine scripts her og der. Mht. de åbninger og lukninger så kan vi da lynhurtigt blive enige om at det altid er sjovere med åbningerne :-)
okay jeg fik det endelig til at virke! ikke helt som i havde skrevet det.. men der hend af! Så der må vist være point til os alle;)
Beklager det lidt sene svar...
barfoed
Synes godt om
Ny brugerNybegynder
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.