Avatar billede canedo Nybegynder
24. maj 2007 - 19:04 Der er 9 kommentarer og
3 løsninger

Tilføjelse af prompt på hjemmeside

Hej,

Jeg har lavet en formular på hjemmeside indeholdende 3 felter:
NAVN
E-MAIL
BESKED

Til e-mail-feltet har jeg fået lavet et script, som fungerer fint og som gør at der dukker en prompt op hvis ikke der er indtastet en e-mail adresse:

<script type="text/JavaScript">
function valider(frm) {
  if (!frm.email.value.match(/^[a-z0-9_\.]+@[a-z0-9_\.]+\.\w{2,4}$/i)) {
    alert("Fejl i email-feltet!");
    return false;
  }
  return true;
}
</script>


Hvordan kan man tilføje en prompt som kommer op, hvis der mangler at blive indtastet nogle tegn i de to andre felter, NAVN og BESKED?
Avatar billede canedo Nybegynder
24. maj 2007 - 19:26 #1
Jeg har brygget lidt pseudo-kode, som ville være mit bud på koden... men jeg ved ingenting om javascript desværre.


<script type="text/JavaScript">
function valider(frm) {
  if (!frm.email.value.match(/^[a-z0-9_\.]+@[a-z0-9_\.]+\.\w{2,4}$/i)) {
    alert("Fejl i email-feltet!");
    return false;
  }
    if (!frm.navn.value(må ikke være 0 antal tegn) {
    alert("Fejl i navne-feltet!");
    return false;
  }
    if (!frm.besked.value(må ikke være 0 antal tegn) {
    alert("Fejl i besked-feltet!");
    return false;
  }
  return true;
}
</script>


Måske det kan give et preg om hvor jeg vil hen...

/Camilla
Avatar billede w13 Novice
25. maj 2007 - 00:28 #2
Hej Camilla.

Jeg tror sådan set bare, det er sådan her:
------------------------------------------
<script type="text/JavaScript">
function valider(frm) {
  if (!frm.email.value.match(/^[a-z0-9_\.]+@[a-z0-9_\.]+\.\w{2,4}$/i)) {
    alert("Fejl i email-feltet!");
    return false;
  }
    if (!frm.navn.value=="") {
    alert("Fejl i navne-feltet!");
    return false;
  }
    if (!frm.besked.value=="") {
    alert("Fejl i besked-feltet!");
    return false;
  }
  return true;
}
</script>
--------------------------
Håber du kan bruge det. =)
Avatar billede canedo Nybegynder
25. maj 2007 - 09:19 #3
hmm... den fungerer ikke helt som den skal.

Jeg har lagt den nye kode ind, men alligevel er det kun reglen om e-mail, som fungerer. De andre regler ignoreres helt. Der mangler et eller andet før de andre regler aktiveres...

/Camilla
Avatar billede canedo Nybegynder
25. maj 2007 - 09:25 #4
Jeg har fundet ud af, at de to sidste regler skal stå i modsat fortegn... Prompt kommer nemlig op hvis der ER tastet noget i felterne. Jeg ved bare ikke hvordan jeg får den vendt til modsat. Nogle der kan hjælpe med den lille ting?
Avatar billede p_nilsson Nybegynder
25. maj 2007 - 10:23 #5
Det er fordi at du returnerer false i hvert if sætning, du returnerer derfor altid efter den første if sætning. Jeg har et lidt anderledes forslag nedenfor, der viser samtlige fejl i en alert boks. Ved ikom syntaksen er helt i orden.

<script type="text/JavaScript">
function valider(frm) {
var error = "";
if (!frm.email.value.match(/^[a-z0-9_\.]+@[a-z0-9_\.]+\.\w{2,4}$/i)) {
error += "Fejl i email-feltet!";
}
if (!frm.navn.value=="") {
error += "Fejl i navn-feltet!";
}
if (!frm.besked.value=="") {
error += "Fejl i beskedl-feltet!";
}
if(error.Length > 0) {
alert(error);
return false;
}
return true;
}
</script>
Avatar billede p_nilsson Nybegynder
25. maj 2007 - 10:26 #6
Til dit ovenstående spørgsmål. Fjern udråbstegenet i (!frm.navn.value==""). Udråbstegn betyder det samme som "Ikke".
Avatar billede canedo Nybegynder
25. maj 2007 - 10:38 #7
p_nilsson> jeg har sat koden ind på siden, men nu kommer der slet ikke nogen prompt op... kan godt være jeg overser noget nede i selve <form> koden eventuel?
Avatar billede canedo Nybegynder
25. maj 2007 - 10:42 #8
p_nilsson> jeg har fjernet udråbstegn i den oprindelige kode fra w13, og det virker nu
Avatar billede w13 Novice
25. maj 2007 - 16:28 #9
Jaeh, der var jeg lidt for hurtigt. :) Men tak for point.
Avatar billede roenving Novice
27. maj 2007 - 00:25 #10
-- og det kan tilføjes, at valideringen af e-mailen er en oldsag, da der efter den gældende standard (rfc 2821) ikke kan valideres for tegn foran @-tegnet, samt at der i dag findes tld'er på 6 bogstaver, så dette

  if (!frm.email.value.match(/^[a-z0-9_\.]+@[a-z0-9_\.]+\.\w{2,4}$/i)) {

-- skal f.eks. udskiftes med:

  if (!frm.email.value.match(/^.*@\w[\w\.]*\.[a-z]{2,6}$/i)) {
Avatar billede roenving Novice
27. maj 2007 - 00:27 #11
Hrm, glemte lige at checke ordentligt, for - er jo ganske almindeligt i domæne-navne:

  if (!frm.email.value.match(/^.*@\w[\w\.-]*\.[a-z]{2,6}$/i)) {
Avatar billede canedo Nybegynder
27. maj 2007 - 19:10 #12
roenving > tak for info, jeg vil helt sikkert rette det lidt til næste gang jeg retter på siden :-)
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