Avatar billede jette1 Nybegynder
05. september 2001 - 16:31 Der er 16 kommentarer og
1 løsning

Scriptet virker ikke i alle versioner af IE

Nedenstående lille test-script virker fint i min browser (IE), både hjemme og på arbejde. Her har jeg begge steder version 5.5.

Min far har version 5.0 og i den version virker det også efter hensigten.

Én af mine venner har lige som mig version 5.5 men her virker det ikke. Han får en fejlmeddelelse uanset om han udfylder feltet korrekt eller ej.

Nogen der ved hvorfor?

<form action=\"#\" method=\"post\" name=\"opret_ny\" onSubmit=\"check_email(document.opret_ny.email.value)\">
<input type=\"text\" name=\"email\" size=\"20\" maxlength=\"30\">
<input type=\"submit\" name=\"submit\" value=\"ok\">
</form>

<SCRIPT language=JavaScript1.2>

function check_email(f) {
  var x = f
  if (!x) {
    document.opret_ny.email.focus();
    alert(\"Du skal indtaste din email adresse\");
    return false;
  }
  else if (x) {
    var pattern = new RegExp(/^[a-zA-Z0-9]+@astongroup.com$/);
    var tjek = x.match( pattern );   
        if (!tjek) {
          document.opret_ny.email.focus();
          alert(\"Du skal indtaste en valid email adresse (*@astongroup.com)\");
          return false;
        }
        else {
          return true;
        }   
    }
}
</script>

</body>
</html>
Avatar billede bobske Nybegynder
05. september 2001 - 16:32 #1
prøv i script language at skrive =Jscript
Avatar billede roenving Novice
05. september 2001 - 16:33 #2
Vafor en fejlmeddelelse?
Avatar billede Slettet bruger
05. september 2001 - 16:36 #3
Ikke noget svar, men hvorfor har du to variabler, der er ens (x og f)?
Avatar billede roenving Novice
05. september 2001 - 16:39 #4
Ditto, men hvorfor overfører du ikke feltet, så du kan bruge det i .focus()
Avatar billede roenving Novice
05. september 2001 - 16:40 #5
Sådan:
function check_email(f) {
  var x = f.value
  if (!x) {
    f.focus();
   
Avatar billede jakoba Nybegynder
05. september 2001 - 16:41 #6
pas på med at sende tekststrenge som parameterværdier, det er sikrere at sende objekter.

<form action=\"#\" method=\"post\" name=\"opret_ny\" onSubmit=\"check_email(document.opret_ny.email)\">    <!-- send felt objektet -->
<input type=\"text\" name=\"email\" size=\"20\" maxlength=\"30\">
<input type=\"submit\" name=\"submit\" value=\"ok\">
</form>

<SCRIPT language=JavaScript1.2>

function check_email(f) {
//  var x = f                              // x svarer til f.value
  if ( f.value.length == 0 ) {            // tester strengens længde
    document.opret_ny.email.focus();
    alert(\"Du skal indtaste din email adresse\");
    return false;
  }
  else {
    var pattern = new RegExp(/^[a-zA-Z0-9]+@astongroup.com$/);
    var tjek = f.value.match( pattern ); 
        if (!tjek) {
          document.opret_ny.email.focus();
          alert(\"Du skal indtaste en valid email adresse (*@astongroup.com)\");
          return false;
        }
        else {
          return true;
        } 
    }
}
</script>

mvh JakobA
Avatar billede jakoba Nybegynder
05. september 2001 - 16:46 #7
Såvid jeg kan se er det javascripts automatiske typekonvertering der nogen gange bliver trigget hvor den ikke burde.
Avatar billede jakoba Nybegynder
05. september 2001 - 16:51 #8
Ups. Regederlig fejl:
din onsubmit SKAL være
    onSubmit=\"return check_email(document.opret_ny.email)\">
istedet for blot
    onSubmit=\"check_email(document.opret_ny.email)\">

uden den return er det rent held hvis der returneres korrekt trye eller false.
Avatar billede jette1 Nybegynder
05. september 2001 - 18:50 #9
roenving --> Fejlmeddelelsen er alert(\"Du skal indtaste en valid email adresse (*@astongroup.com)\");.
Grunden til at jeg skriver den lange version: document.opret_ny.email.focus(), er at jeg har haft problemer med at få funktionen til at hente og bringe værdierne fra felterne i formularen og har derfor prøvet forskellige ting. Det virkede først da jeg skrev det således.

Det er også derfor at jeg bruger det lidt dobbelte x = f;, som phoenixv har kommenteret.

jacoba --> hvad er automatisk typekonvertering? Er det når der konverteres mellem f.eks. tal og tekst?

Email feltet i mit eksempel er en del af en formular med flere felter. I den oprindelige formular har jeg husket return i onSubmit. Jeg lavede dette eksempel efter hukommelsen, så derfor glemte jeg return. Men sjovt nok virker ovenstående fint for min far, hvorimod den endelige formular ikke virker for ham.

Jeg kopierer lige hele formularen og scriptet ind her, så kan det være I kan se en fejl som jeg ikke selv kan se...
Avatar billede jette1 Nybegynder
05. september 2001 - 18:54 #10
Inden jeg belemrer Jer med hele balladen, vil jeg lige afprøve jakobas teori mht. at sende tekststrengen....
Avatar billede jakoba Nybegynder
05. september 2001 - 19:03 #11
Den vigtige er den med at skrive  return  i onsubmit handleren.
Avatar billede jette1 Nybegynder
05. september 2001 - 19:16 #12
Det virker stadig kun i min browser, så her kommer det :-|


<form action=\"<?php echo $PHP_SELF?>\" method=\"post\" name=\"opret_ny\" onSubmit=\"return check_all(this.form)\">
<BR>
<table border=\"0\" cellpadding=\"5\" cellspacing=\"0\" align=\"center\">
<tr>
<td class=\"formtext\">Fornavn:</td><td align=\"left\"><input class=\"field\" type=\"text\" name=\"fnavn\" size=\"20\" maxlength=\"20\" tabindex=\"1\" value=\"<?php echo $fnavn?>\"></td>
</tr>
<tr></B>
<td class=\"formtext\">Efternavn:</td><td align=\"left\"><input class=\"field\" type=\"text\" name=\"enavn\" size=\"20\" maxlength=\"30\" tabindex=\"2\" value=\"<?php echo $enavn?>\"></td>
</tr>
<tr>
<td class=\"formtext\">Email:</td><td align=\"left\"><input class=\"field\" type=\"text\" name=\"email\" size=\"20\" maxlength=\"20\" tabindex=\"3\" value=\"<?php echo $email?>\"></td>
</tr>
<tr>
<td class=\"formtext\">Lokation:</td><td align=\"left\">
<SELECT name=\"lokation\" style=\"width:150px\" class=\"field\" tabindex=\"4\">
    <?php if (!$lokation) {
                $lokation = \"Lokation 1\";
          } ?>
    <OPTION selected value=\"<?php echo $lokation?>\"><?php echo $lokation?></OPTION>
    <OPTION value=\"Lokation 1\">Lokation 1</OPTION>
    <OPTION value=\"Lokation 2\">Lokation 2</OPTION>
    <OPTION value=\"Lokation 3\">Lokation 3</OPTION>
    <OPTION value=\"Lokation 4\">Lokation 4</OPTION>
    <OPTION value=\"Lokation 5\">Lokation 5</OPTION>
    <OPTION value=\"Lokation 6\">Lokation 6</OPTION>
    <OPTION value=\"Lokation 7\">Lokation 7</OPTION>
    <OPTION value=\"Lokation 8\">Lokation 8</OPTION>
    <OPTION value=\"Lokation 9\">Lokation 9</OPTION>
    <OPTION value=\"Lokation 10\">Lokation 10</OPTION>
</select>
    </td>
</tr>
<tr>
<td class=\"formtext\">Afdeling:</td><td align=\"left\">
<SELECT name=\"afdeling\" style=\"width:150px\" class=\"field\" tabindex=\"5\">
    <?php if (!$afdeling) {
                $afdeling = \"Afdeling 1\";
          } ?>
    <OPTION selected value=\"<?php echo $afdeling?>\"><?php echo $afdeling?></OPTION>   
    <OPTION value=\"Afdeling 2\">Afdeling 2</OPTION>
    <OPTION value=\"Afdeling 3\">Afdeling 3</OPTION>
    <OPTION value=\"Afdeling 4\">Afdeling 4</OPTION>
    <OPTION value=\"Afdeling 5\">Afdeling 5</OPTION>
    <OPTION value=\"Afdeling 6\">Afdeling 6</OPTION>
    <OPTION value=\"Afdeling 7\">Afdeling 7</OPTION>
    <OPTION value=\"Afdeling 8\">Afdeling 8</OPTION>
    <OPTION value=\"Afdeling 9\">Afdeling 9</OPTION>
    <OPTION value=\"Afdeling 10\">Afdeling 10</OPTION>
</select></td>
</tr>
<tr>
<td class=\"formtext\">BrugerID:</td><td align=\"left\"><input class=\"field\" type=\"text\" name=\"brugerID\" size=\"8\" maxlength=\"8\" tabindex=\"3\" value=\"<?php echo $brugerID?>\"></td>
</tr>
<tr>
<td align=\"left\" colspan=\"2\"><BR><input type=\"submit\" name=\"submit\" tabindex=\"5\" value=\"OK\" style=\"width:100px\"></td>
</tr>
</table>
<input type=\"hidden\" name=\"formnumber\" value=\"ny\">
</form>


<SCRIPT language=JavaScript1.2>
function check_fnavn(f) {
  var x = f.value
 
  if (!x) {
    f.focus();
    alert(\"Du skal indtaste dit fornavn\");         
    return false;
  }
  else if (x) {
    var x = x + \"q\";
    if (trim(x) == \"q\") {
        f.focus();
        alert(\"Du skal indtaste dit fornavn\");
        return false;     
    }   
  }
  else {
    return true;
  }
return true;   
}

function check_enavn(f) {
  var x = f.value
 
  if (!x) {
    f.focus();
    alert(\"Du skal indtaste dit efternavn\");
    return false;
  }
  else if (x) {
    var x = x + \"q\";
    if (trim(x) == \"q\") {
        f.focus();
        alert(\"Du skal indtaste dit efternavn\");
        return false;
    }
  }
  else {
    return true;
  }
return true;   
}

function check_email(f) {
  var x = f.value
  if (!x) {
    f.focus();
    alert(\"Du skal indtaste din email adresse\");
    return false;
  }
  else if (x) {
    var pattern = new RegExp(/^[a-zA-Z0-9]+@astongroup.com$/);
    var tjek = x.match( pattern );   
        if (!tjek) {
          f.focus();
          alert(\"Du skal indtaste en valid email adresse (*@astongroup.com)\");
          return false;
        }
        else {
          return true;
        }   
    }
}

function check_brugerID(f) {
  var x = f.value
 
  if (!x) {
    f.focus();
    alert(\"Du skal indtaste et brugerID\");
    return false;
  }
  else if (x) {
    id = x;
    my_email = document.opret_ny.email.value;
    if (my_email.search(id) == -1) {
        f.focus();
        alert(\"Dit brugerID skal være lig med de initialer\\nder står foran @ i din email adresse\");
        return false;
    }
  }
return true;
}


function check_all(f) {
  if (!check_fnavn(document.opret_ny.fnavn)) return false;
  if (!check_enavn(document.opret_ny.enavn)) return false;
  if (!check_email(document.opret_ny.email)) return false;
  if (!check_brugerID(document.opret_ny.brugerID)) return false;
  return true;
}


function ltrim( s ) {
  var lpatt = new RegExp( \"^ *(.*)$\" );
  var parse = s.match( lpatt );
  return parse[1];
}

function rtrim( s ) {
  var rpatt = new RegExp( \"^(.*[^ ]) *$\" );
  var parse = s.match( rpatt );
  return parse[1];
}

function trim (string) {
  trimboth = ltrim( rtrim( string ) );
  return trimboth;
}
</SCRIPT>
Avatar billede jette1 Nybegynder
05. september 2001 - 19:18 #13
Så vidt vides er det kun check_email der giver problemer... kan det være den dér RegExp der laver knuder?
Avatar billede jakoba Nybegynder
05. september 2001 - 19:34 #14
fandt den (i manualen som sedvanligt)

du siger
    var pattern = new RegExp(/^[a-zA-Z0-9]+@astongroup.com$/);
men regexp skal have en STRENG som parameter.
prøv med:
    var pattern = new RegExp(\"^[a-zA-Z0-9]+@astongroup.com$\");

mvh JakobA
Avatar billede jakoba Nybegynder
05. september 2001 - 19:36 #15
og i detail-afdelingen:
. (punktum) er et specialtegn. for at sikre et punktum der skal der stå:
\\.
Avatar billede jette1 Nybegynder
05. september 2001 - 20:26 #16
jacoba, du er ganske enkelt genial :-)

Tusind, tak... nu virker det...
Avatar billede jakoba Nybegynder
05. september 2001 - 20:39 #17
takker
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