Avatar billede mekaniker Nybegynder
13. august 2002 - 19:58 Der er 8 kommentarer og
1 løsning

Valider enten den en eller den anden

Jeg bruger dette til at validere email's

Den første virker fint, men den anden virker ikke.

Det skulle gerne være sådan at hvis jeg skriver noget i det ene inputfelt, validere den det.
Og hvis jeg skriver i det andet, validere den det.

Jeg skal enten bruge det der bliver intastet i det ene felt eller det andet



<script type="text/javascript">
<!-- Dette script og mange flere -->
<!-- findes hos http://www.html.dk -->
<!-- Start

function validering()
  {
  error = 0;

  placering=0;
  tekst=(document.forms[0].dk.value).toLowerCase();
  placering=tekst.indexOf("@");
  if(tekst ==""){
    alert ("Indtast Email!");
    error = 1;
  }
  else{
    tegn=tekst.indexOf(" ");
    if(tegn!=-1){
      alert ("Ingen mellemrum Email'en, Tak");
      error = 1;
    }
    else{
      if (tekst.indexOf("æ")!=-1 || tekst.indexOf("ø")!=-1 || tekst.indexOf("å")!=-1 ||
        tekst.indexOf("Æ")!=-1 || tekst.indexOf("Ø")!=-1 || tekst.indexOf("Å")!=-1 ||
        tekst.indexOf(";")!=-1 || tekst.indexOf(",")!=-1){
        alert ("Email'en må ikke indeholde: æ ø å Æ Ø Å , ;");
        error = 1;
      }
    else{
      if (placering<1 || tekst.length<=(placering+1)){
        alert ("Ugyldig Email!");
        error = 1;
      }
    }
  }
}
if(error == 0)

document.forms[0].submit();   
}

// Slut -->
</script>
<script type="text/javascript">
<!-- Dette script og mange flere -->
<!-- findes hos http://www.html.dk -->
<!-- Start

function validering2()
  {
  error = 0;

  placering=0;
  tekst=(document.forms[0].udland.value).toLowerCase();
  placering=tekst.indexOf("@");
  if(tekst ==""){
    alert ("Type Email!");
    error = 1;
  }
  else{
    tegn=tekst.indexOf(" ");
    if(tegn!=-1){
      alert ("No space in Email, please");
      error = 1;
    }
    else{
      if (tekst.indexOf("æ")!=-1 || tekst.indexOf("ø")!=-1 || tekst.indexOf("å")!=-1 ||
        tekst.indexOf("Æ")!=-1 || tekst.indexOf("Ø")!=-1 || tekst.indexOf("Å")!=-1 ||
        tekst.indexOf(";")!=-1 || tekst.indexOf(",")!=-1){
        alert ("No: æ ø å Æ Ø Å , ;");
        error = 1;
      }
    else{
      if (placering<1 || tekst.length<=(placering+1)){
        alert ("Unvalid Email!");
        error = 1;
      }
    }
  }
}
if(error == 0)
document.forms[0].submit();   
}

// Slut -->
</script>

<form action="input.asp" method="post" onsubmit="return validering() && validering2();">
  <table width="800" height="655" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
      <td height="259" colspan="4" valign="top"> <p><br>
          <br>
          <br>
          <br>
        </p>
        <p>&nbsp;</p>
        <p><img src="top.jpg" width="800" height="115"></p></td>
    </tr>
    <tr>
      <td width="52" height="34">&nbsp;</td>
      <td colspan="3">To recieve news and updates, please join the iii magazine
        mailing list:</td>
    </tr>
    <tr>
      <td height="28">&nbsp;</td>
      <td width="99">Danishs subscribers </td>
      <td width="152"><input type="text" name="dk" class="inputbox_text"></td>
      <td width="497">&nbsp;</td>
    </tr>
    <tr>
      <td height="28">&nbsp;</td>
      <td>Foreign subscribers </td>
      <td><input type="text" name="udland" class="inputbox_text"></td>
      <td><input type="submit" name="Submit" value="Submit" class="button"></td>
    </tr>
    <tr valign="bottom">
      <td colspan="4"><img src="bund.jpg" width="799" height="61"><br> <br> <br>
        <br> </td>
    </tr>
  </table>
</form>
Avatar billede jakoba Nybegynder
13. august 2002 - 20:11 #1
Det der med at kalde  document.forms[0].submit();  fra valideringsfunktionerne er altså IKKE en god ide.

opret et ekstra felt med type='hidden'

<input type='hidden' name='checkedemail" value="">

Det der med at kalde  document.forms[0].submit();  fra valideringsfunktionerne er altså IKKE en god ide.
men denne gang udskifter vi det med:
    if(error == 0) {
        document.forms[0].checkedemail.value = tekst;
        return true;
    }
i begge funktioner.

og siden vi ny kun har brug for at eet af felterne validerer skriver vi  || (or)  istedetfor  && (and)  imellem kaldene til de to funktioner:
    onsubmit="return validering() || validering2();"

den gyldige email ankommer så i feltet 'checkedemail'

mvh JakobA
Avatar billede mekaniker Nybegynder
14. august 2002 - 11:44 #2
Hej Jakoba

Nu når jeg har sidet og leget lidt med det finder jeg jo ud af at det ikke lige var det jeg skulle.

Jeg prøver at forklare igen.

Hvis jeg kun skriver i det ene felt skal den kun validere det.

Hvis jeg skiver i begge felter skal den validere begge to.

Kan dette lade sig gøre.

Citat fra dig "Det der med at kalde  document.forms[0].submit();  fra valideringsfunktionerne er altså IKKE en god ide."

hvad skal man så istedet..?

Da jeg ikke kan finde ud af javascript, må du gerne komme med et eksempel.

på forhånd tak.
Avatar billede jakoba Nybegynder
14. august 2002 - 12:34 #3
bagfra :
    istedet skal man sørge for at valideringsfunktionerne returnerer enten true eller false, og bruge de returnerede værdier til at beslutte om formularen skal sendes.

    Ja det kan lade sig gøre.

    men som vi allerede har set er det ikke nemt at forklare ordentligt. før vi kan skrive kode skal vi logikke lidt så vi helt klart og utvetydigt VED hvad det er vi vil have den kode til at gøre. Og selv med din uddybende forklaring her, så VED vi det faktisk ikke endnu.
    På menneske-sprog er eller et tvetydigt ord. nogen gang betyder det "kun een af delelene", andre gange betyder det "mindst en af delene". når vi snakker ser vi som regel ud af sammenhængen hvad der menes:
    "skal vi dreje tilhøjre eller tilvenstre"  (kun en af delene)
    "hun skal være brunette eller have store bryster"  (gerne begge dele)
men det er ikke til at se ud af sammenhængen her :(,  så vi må lave en omhyggelig beskrivelse for at være helt sikre på hvad der menes.

    For hvert felt er der 3 mulige tilstande:
godt  =  feltet er udfyldt med en lovlig emailadresse
galt  =  felet er udfyldt men noget der ikke er en emailadresse
tomt  =  feltet er slet ikke udfyldt.

der er 2 felte 'dk' og 'udland' og hvert af de to felter kan hære i en af de 3 tilstande:

udland    dk
godt      godt    => formen skal afsendes
godt      galt    => formen må ikke afsendes
godt      tomt    => formen skal afsendes
galt      godt    => formen må ikke afsendes
galt      galt    => formen må ikke afsendes
galt      tomt    => formen må ikke afsendes
tomt      godt    => formen skal afsendes
tomt      galt    => formen må ikke afsendes
tomt      tomt    => ? hvad skal vi så gøre ?

den sidste der har jeg brug for lidt feedback fra dig til

mvh JakobA
Avatar billede mekaniker Nybegynder
14. august 2002 - 13:11 #4
Hej JakobA

Hvis den sidste er tom  tom => formen må ikke afsendes

Alle, alert ("Unvalid Email!"); må gerne være på engelsk, hvis det gør det lettere.

MVH
Mekaniker
Avatar billede jakoba Nybegynder
14. august 2002 - 13:28 #5
så bliver det sådanher:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD><TITLE>validering</TITLE>

<script type="text/javascript"> <!--
// Dette script og mange flere
// findes hos http://www.html.dk

function emailTilstand( str ) {  // returnerer true hvis  str  er en lovlig email
    if ( str == "" ) {
        return "tomt";
    }
    str = str.toLowerCase();
    tegn=str.indexOf(" ");
    if(tegn!=-1){
        alert ("Invalid Email\nEmail address cannot contain spaces");
        return "galt";
    }
    placering = str.indexOf("@");
    if ( 1>placering || placering+1>=str.length ) {
        alert ("Invalid Email!\nEmail address must contain a @");
        return "galt";
    }
    if (str.indexOf("æ")!=-1 || str.indexOf("ø")!=-1 || str.indexOf("å")!=-1 ||
        str.indexOf("Æ")!=-1 || str.indexOf("Ø")!=-1 || str.indexOf("Å")!=-1 ||
        str.indexOf(";")!=-1 || str.indexOf(",")!=-1) {
        alert ("Invalid Email\nEmail address cannot contain: æ ø å Æ Ø Å , ;");
        return "galt";
    }
    return "godt";  // alle tests gik godt
}; //end emailTilstand( string ) -> "tomt" | "godt" | "galt"

function validering() {

    var dkTilstand    = emailTilstand( document.forms[0].dk.value );
    if ( dkTilstand == "galt" ) {
        document.forms[0].dk.focus();
        return false;  // formularen må ikke sendes
    }

    var udlandTilstand = emailTilstand( document.forms[0].udland.value );
    if ( udlandTilstand == "galt" ) {
        document.forms[0].udland.focus();
        return false;  // formularen må ikke sendes
    }

    if ( dkTilstand == "tomt" && udlandTilstand == "tomt" ) {
        alert( "et af email-felterne skal udfyldes" );
        document.forms[0].dk.focus();
        return false;  // formularen må ikke sendes
    }

    return true;  // formularen må sendes

}; //end validering( frmObj ) ->  true | false

// Slut -->
</script>
</HEAD>
<BODY>

<form action="input.asp" method="post" onsubmit="return validering();">
  <table width="800" height="655" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
      <td height="259" colspan="4" valign="top"> <p><br>
          <br>
          <br>
          <br>
        </p>
        <p>&nbsp;</p>
        <p><img src="top.jpg" width="800" height="115"></p></td>
    </tr>
    <tr>
      <td width="52" height="34">&nbsp;</td>
      <td colspan="3">To recieve news and updates, please join the iii magazine
        mailing list:</td>
    </tr>
    <tr>
      <td height="28">&nbsp;</td>
      <td width="99">Danishs subscribers </td>
      <td width="152"><input type="text" name="dk" class="inputbox_text"></td>
      <td width="497">&nbsp;</td>
    </tr>
    <tr>
      <td height="28">&nbsp;</td>
      <td>Foreign subscribers </td>
      <td><input type="text" name="udland" class="inputbox_text"></td>
      <td><input type="submit" name="Submit" value="Submit" class="button"></td>
    </tr>
    <tr valign="bottom">
      <td colspan="4"><img src="bund.jpg" width="799" height="61"><br> <br> <br>
        <br> </td>
    </tr>
  </table>
</form>

</BODY>
</HTML>

mvh JakobA
Avatar billede mekaniker Nybegynder
15. august 2002 - 11:16 #6
Hej jakobA

Mange tak for den udførlige hjælp.

Nu når du er sådan en haj til det java-script, kan du så anbefale mig nogle sites omkring java-scripts både med toturials og scripts.

Kan du måske anbefale nogle bøger omkring det.
Nu har jeg beskeftiget mig med ASP i 1 års tid, men jeg kan jo godt se at jeg bliver nødt til at kunne noget java-script.
Avatar billede jakoba Nybegynder
15. august 2002 - 12:23 #7
ASP kan skrives med enten VBscript-syntaks eller JScript-syntaks og JScript er 98% det samme som javascript. Så en god glidende overgang kunne være at bruge JScript syntaks i dine ASP scripts. Du skal blot være opmærksom på at en masse af de standardobjekter JScript benytter (eg fileSystemObject) slet ikke findes i javascript.

de 'bøger' jeg bruger mest er dem der linkes til her:
http://developer.netscape.com/docs/manuals/javascript.html
men de er mere til at slå op i end til at lære fra bunden med.

Jeg kan ikke rigigt anbefale nogen javascript bøger da jeg ikke har læst nogen.

mvh JakobA
Avatar billede mekaniker Nybegynder
21. august 2002 - 15:46 #8
Hej Jakob

Jeg har fundet en lille fejl, som jeg vil håbe på, at du vil mig hjælp mig med at løse.
Scriptet acceptere at du skriver sdfs@cxv altså det tjekker ikke om der er noget punktum og om der står noget bagved punktummet.

Er det noget som kunne løses.

MVH
Mekaniker
Avatar billede jakoba Nybegynder
21. august 2002 - 18:05 #9
prøv at skrive funktionen emailTilstand om til:

function emailTilstand( str ) {  // returnerer true hvis  str  er en lovlig email
    if ( str == "" ) {
        return "tomt";
    }
    var re = /^[a-z0-9_-]+(\.[a-z0-9_-]+)*@([a-z0-9_-]+\.)+[a-z]{2,4}$/i;
    if re.test( str ) {
        return "godt";  // alle tests gik godt
    } else {
        alert ("Invalid Email!\nEmail address must be correct");
        return "galt";
    }
}; //end emailTilstand( string ) -> "tomt" | "godt" | "galt"

mvh JakobA
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