Avatar billede barfoed Nybegynder
15. juli 2001 - 02:31 Der 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

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
}
</SCRIPT>
<BODY>
<FORM NAME=\"testform\" ACTION=\"\">
  Firma navn: <INPUT NAME=\"Firmaets navn\">
  <BR>
  Email: <INPUT NAME=\"Email addrese\">
  <BR>
  Fornavn: <INPUT NAME=\"Personens fornavn\">
  <BR>
            Efternavn: <INPUT NAME=\"Prsonens efternavn\">
            <BR>
  <INPUT TYPE=BUTTON VALUE=\"TEST FORM\" OnClick=IsFormComplete(\"testform\")>
</FORM>
</BODY>
</HTML>

Og den anden:

<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
}

</SCRIPT>
<BODY>
<FORM NAME=\"testform\" ACTION=\"\">
  Email address: <INPUT NAME=\"email\">
  <BR>
  <INPUT TYPE=BUTTON VALUE=\"TEST FORM\" OnClick=IsEmailValid(\"testform\",\"email\")>
</FORM>
</HTML>


Jeg er ikke den vilde java gut, så jeg løb død i det, efter mødet med mange fejl!=(
Håber i kan hjælpe!

En anden ting er at de kun virker hvis man klikker på knappen! Kan man ikke få det til at virke hvis man bruger enter/return ?
Avatar billede theartist Nybegynder
15. juli 2001 - 02:37 #1
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
}

</SCRIPT>



<BODY>
<FORM NAME=\"testform\" ACTION=\"\">
  Firma navn: <INPUT NAME=\"Firmaets navn\">
  <BR>
  Email: <INPUT NAME=\"Email addrese\">
  <BR>
  Fornavn: <INPUT NAME=\"Personens fornavn\">
  <BR>
            Efternavn: <INPUT NAME=\"Prsonens efternavn\">
            <BR>
  <INPUT TYPE=BUTTON VALUE=\"TEST FORM\" OnClick=IsFormComplete(\"testform\")>
</FORM>

<FORM NAME=\"testform1\" ACTION=\"\">
  Email address: <INPUT NAME=\"email1\">
  <BR>
  <INPUT TYPE=BUTTON VALUE=\"TEST FORM\" OnClick=IsEmailValid(\"testform1\",\"email1\")>
</FORM>

</BODY>
</HTML>
Avatar billede barfoed Nybegynder
15. juli 2001 - 02:40 #2
Tester lige.... ( Jeg var igang med noget helt andet hehe:)
Avatar billede barfoed Nybegynder
15. juli 2001 - 02:45 #3
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?
Avatar billede theartist Nybegynder
15. juli 2001 - 03:24 #4
ja det kan jeg godt se, den kan du ikke bruge til noget, s¨kan du prøve sådan her (jeg har lavet din formcheck en smule om)

<HTML>
<HEAD>
  <TITLE>Denne tester for udfylte felter</TITLE>
<script language=\"javascript\">
function gyldigEmail(email) {
    ugyldigeTegn = \"/:,;\"
    if (email == \"\") {
        return false
    }
    for (i=0; i<ugyldigeTegn.length; i++) {
    fejlTegn = ugyldigeTegn.charAt(i)
    if (email.indexOf(fejlTegn,0) > -1) {
        return false
    }
}

paaPos = email.indexOf(\"@\",1)
if (paaPos == -1) {
    return false
}

if(email.indexOf(\"@\",paaPos+1) != -1) {
    return false
}
punktumPos = email.indexOf(\".\",paaPos)
if (punktumPos == -1) {
    return false
}
if (punktumPos+3 > email.length) {
    return false
}
return true
}
function afsendelse(form) {
    if (!gyldigEmail(form.email.value)) {
        alert(\"fejl i e-mail feltet - på den igen\")
        form.email.focus()
        form.email.select()
        return false
    }
    return true
}
</script>

<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
}

</SCRIPT>



<BODY>
<FORM method=\"post\" NAME=\"testform\" ACTION=\"#\" onSubmit=\"return afsendelse(this)\">
  Firma navn: <INPUT NAME=\"Firmaets navn\">
  <BR>
  Email: <INPUT NAME=\"email\">
  <BR>
  Fornavn: <INPUT NAME=\"Personens fornavn\">
  <BR>
            Efternavn: <INPUT NAME=\"Prsonens efternavn\">
            <BR>
  <INPUT TYPE=\"submit\" VALUE=\"TEST FORM\" OnClick=IsFormComplete(\"testform\")>
</FORM>

</BODY>
</HTML>
Avatar billede barfoed Nybegynder
15. juli 2001 - 03:38 #5
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;)
Avatar billede theartist Nybegynder
15. juli 2001 - 03:45 #6
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...
Avatar billede barfoed Nybegynder
15. juli 2001 - 03:48 #7
helt okay.. burde gå samme vej! Håber du eller en anden svare. Måske med mere søvn bag øjnene;)
Avatar billede jakoba Nybegynder
15. juli 2001 - 10:03 #8
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>

</head>

<BODY>

<FORM method=\"post\" NAME=\"testform\" ACTION=\"#\" onSubmit=\"return afsendelse(this)\">
  Firma navn: <INPUT NAME=\"Firmaets navn\">
  <BR>
  Email: <INPUT NAME=\"email\"><BR>
  Fornavn: <INPUT NAME=\"Personens fornavn\"><BR>
  Efternavn: <INPUT NAME=\"Prsonens efternavn\"><BR>
  <INPUT TYPE=\"submit\" VALUE=\"TEST FORM\">
</FORM>

</BODY>
</HTML>

mvh JakobA
Avatar billede jakoba Nybegynder
15. juli 2001 - 10:08 #9
Ups. linien:
    var pPos2 = email.lastIndexOf(\".\",paaPos);
bør være:
    var pPos2 = email.lastIndexOf(\".\");
Avatar billede theartist Nybegynder
15. juli 2001 - 13:37 #10
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.
Avatar billede jakoba Nybegynder
15. juli 2001 - 15:05 #11
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 :-))
Avatar billede theartist Nybegynder
15. juli 2001 - 15:13 #12
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 :-)
Avatar billede barfoed Nybegynder
05. august 2001 - 01:06 #13
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
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