Avatar billede bb_maze Nybegynder
04. maj 2004 - 15:00 Der er 28 kommentarer og
1 løsning

Validering af form

Hejsa

Jeg har en form med nogle felter som skal udfyldes og nogle radiobuttons hvor der er én der skal vælges.

Hvordan laves det så der skrives at der mangler at blive udfyldt et felt?

På forhånd tak

HYGGE
Avatar billede fbisen Nybegynder
04. maj 2004 - 15:03 #1
Er det Javascript eller Java?
Ehh, kender ikke helt forskellen.

Men hvis vi nu siger, at det felt som du ønsker udfyldt, hedder context.
Så kan du jo:

if((content != null) && (content.length()>0)) {
out.println("<script> alert('Ikke alle felter er udfyldt')</script>");
}
Avatar billede fbisen Nybegynder
04. maj 2004 - 15:04 #2
hov lol
Den er lige lidt forkert!!!

if((content == null)||(content.length()<=0)) {
out.println("<script> alert('Ikke alle felter er udfyldt')</script>");
}
Avatar billede bb_maze Nybegynder
04. maj 2004 - 15:06 #3
Det er javascript.. Det er jo også den kategori jeg har skrevet det i ;)

Men jeg vil gerne have så der er forskellige fejl, alt efter hvilket felt man glemmer at udfylde. Evt. så det står ud for felterne der ikke er udfyldt.

HYGGE
Avatar billede roenving Novice
04. maj 2004 - 15:06 #4
Prøv at vise formen, men det kunne være à la dette:

<script type="text/javascript">
function valider(f){
  if(f.navn.value==""){
    alert('Du mangler at udfylde navn');
    f.navn.focus();
    return false;
  }
  var r = f.r1,chkd=false;
  for(i=0;r.length>i;i++)chkd = chkd||r[i].checked;
  if(!chkd){
    alert('Du mangler at udfylde valg');
    f.r1[0].focus();
    return false;
  }
  return true;
}
</script>

<form action="" onsubmit="return valider(this)">

<input type="text" name="navn"><br>
<input type="radio" name="r1" value="valg1">
<input type="radio" name="r1" value="valg2">
<input type="radio" name="r1" value="valg3">
</form>
Avatar billede fbisen Nybegynder
04. maj 2004 - 15:08 #5
Jeg er ikke helt inde i Javascript ....
Men du kunne prøve det af...
Så skal der bare stå:

if((content == null)||(content.length()<=0)) {
out.println("Du har ikke udfyldt context feltet!");
}

Du kan bare sætte det ind lige efter inputtet, så bliver det også printet ud der...
Ved ikke om det virker i Javascript, men Java og Javascript ligger da i familie...
Avatar billede roenving Novice
04. maj 2004 - 15:10 #6
Java og javascript er i familie på samme måde som mennesket og grisen ...

De har fælles forfædre !-)

-- så du kan i visse tilfælde benytte nogle syntaktiske indgangsvinkler, men ellers er det helt forskelligt !o]
Avatar billede fbisen Nybegynder
04. maj 2004 - 15:12 #7
OK - Så lærte jeg da også lige noget nyt :)
Avatar billede bb_maze Nybegynder
04. maj 2004 - 15:15 #8
Ok, roenving, her er form'en:

<table width="450" border="0" align="center">
    <tr>
      <td width="423"><form name="form1" method="post" action="?side=nyhedsadmin">
        <table border="0" align="center">
          <tr>
            <td width="141"><p><strong>Overskrift: </strong></p></td>
            <td width="281"> <div align="left">
                <input name="link" type="text" class=form value="Titel" size="45">
              </div></td>
          </tr>
          <tr>
            <td><strong>Link til org. artikel: </strong></td>
            <td width="281"><div align="left"><strong>
                <input name="http" type="text" class=form value="http://" size="45">
                </strong></div></td>
          </tr>
          <tr>
            <td><strong>Kilde:</strong></td>
            <td width="281"> <div align="left">
                <input name="kilde" type="text" class=form value="Kilde" size="45">
              </div></td>
          </tr>
          <tr>
            <td><strong>Forfatter:</strong></td>
            <td width="281"><div align="left"><strong>
                <input name="forfatter" type="text" class=form value="Dit navn" size="45">
                </strong></div></td>
          </tr>
        </table>
        <div align="center"><br>
          <br>
        </div>
        <table width="426" align="center" cellpadding="1" cellspacing="0">
          <tr>
            <td colspan="3"><strong>Kategori <font color="#FF0000">(Husk at v&aelig;lge
              en!)</font>:</strong></td>
          </tr>
          <tr valign="bottom">
            <td height="20" colspan="3"><div align="center"><strong><font size="1">----Formel
                1----</font></strong></div></td>
          </tr>
          <tr>
            <td width="220"> <input type="radio" name="billede" value="BAR">
              BAR</td>
            <td width="220"> <input type="radio" name="billede" value="Jordan">
              Jordan</td>
            <td width="220"> <input type="radio" name="billede" value="Renault">
              Renault</td>
          </tr>
          <tr>
            <td> <input type="radio" name="billede" value="Ferrari">
              Ferrari</td>
            <td> <input type="radio" name="billede" value="McLaren">
              McLaren</td>
            <td> <input type="radio" name="billede" value="Williams">
              Williams</td>
          </tr>
          <tr>
            <td><input type="radio" name="billede" value="Jaguar">
              Jaguar</td>
            <td> <input type="radio" name="billede" value="minardi">
              Minardi</td>
            <td> <input type="radio" name="billede" value="Sauber">
              Sauber</td>
          </tr>
          <tr>
            <td> <input type="radio" name="billede" value="Toyota">
              Toyota</td>
            <td> <input type="radio" name="billede" value="Williams">
              Williams</td>
            <td> <input type="radio" name="billede" value="Minardi">
              Minardi</td>
          </tr>
          <tr>
            <td height="19">&nbsp;</td>
            <td>&nbsp;</td>
            <td> <input type="radio" name="billede" value="FIA">
              FIA</td>
          </tr>
          <tr valign="bottom">
            <td height="20" colspan="3"><div align="center"><strong><font size="1">----Ikke
                formel 1----</font></strong></div></td>
          </tr>
          <tr>
            <td height="19"> <input type="radio" name="billede" value="Diverse">
              Diverse</td>
            <td> <input type="radio" name="billede" value="Rally">
              Rally</td>
            <td> <input type="radio" name="billede" value="Baner">
              Baner</td>
          </tr>
          <tr>
            <td height="19"> <input type="radio" name="billede" value="Dansk">
              Dansk</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
        </table>
        <p align="center">&nbsp; </p>
        <p align="center"><strong>Artikel:</strong><br>
          <textarea name="tekst" cols="60" rows="10" class=form></textarea>
        </p>
        <p align="center">
          <input type="submit" name="Submit" value="Tilf&oslash;j">
          <input type="reset" name="Submit2" value="Reset">
        </p>
      </form></td>
    </tr>
  </table>

-----

Sig til hvis du skal bruge andet ;-)

HYGGE
Avatar billede roenving Novice
04. maj 2004 - 15:16 #9
-- og bb_maze

Hvis du erstatter </form> med dette

<br>
<input type="submit">
</form>

-- kan du tydeligt se funktionen !-)
Avatar billede roenving Novice
04. maj 2004 - 15:17 #10
-- er det med vilje, at alle dine radios hedder det samme ?-)
Avatar billede crille Nybegynder
04. maj 2004 - 15:20 #11
Jeg ved ikke om det er rigtig dårlig form at henvise til en anden side men hvis du ser på http://www.html.dk/scripts/javascript/00017/ der har du løsningen.
Avatar billede roenving Novice
04. maj 2004 - 15:21 #12
-- så kan du direkte tage mit script og sætte ind:

<script type="text/javascript">
function valider(f){
/*Herfra og til næste kommentar, kan du bare sætte ind flere gang, du skal bare ændre felt-navne og alert-tekst !-) */
  if(f.link.value==""){
    alert('Du mangler at udfylde overskriften');
    f.link.focus();
    return false;
  }
/*Kommentar slut*/

  var r = f.billede,chkd=false;
  for(i=0;r.length>i;i++)chkd = chkd||r[i].checked;
  if(!chkd){
    alert('Du mangler at udfylde Mærke eller løbstype');
    f.billede[0].focus();
    return false;
  }
  return true;
}
</script>

-- og så formtagget sådan:

<td width="423"><form name="form1" method="post" action="?side=nyhedsadmin" onsubmit="return valider(this);">
Avatar billede roenving Novice
04. maj 2004 - 15:23 #13
Det er ikke dårlig form at henvise til en anden side med en løsning, men det er ikke helt smart at henvise til en dårligere løsning ...
Avatar billede bb_maze Nybegynder
04. maj 2004 - 15:30 #14
Roenving: Ja, det er med vilje :) Det er fordi jeg ikke er helt færdig med det endnu..

Jeg tager lige et kig på det script du smed :D

HYGGE
Avatar billede bb_maze Nybegynder
04. maj 2004 - 15:32 #15
Forresten... <script></script> skal stå i head, ik? Eller? Og hvordan gør jeg det når jeg ikke har noget head på min php side?

Sider bliver nemlig included på en anden side, og der er derfor ingen head, og heller ingen body-tags..

HYGGE
Avatar billede crille Nybegynder
04. maj 2004 - 15:35 #16
Roenving, det er da rigtigt at dit script du har der er smartere, men nu tænkte jeg at man kunne måske lære noget af det andet. Men hvad ved jeg. Jeg går jo ud fra at hvis løsningen er var leveret at spørgsmålet blev lukket.
Avatar billede bb_maze Nybegynder
04. maj 2004 - 15:35 #17
Lige en ting til.. Hvor ændre jeg felt-navnene? Kan ikke lige gennemskue koden...

HYGGE
Avatar billede roenving Novice
04. maj 2004 - 15:36 #18
Script må stå stort set hvorsomhelst på en en html-side, men jeg vil da anbefale at lægge det ud i en anden fil, når du har testet det, og så bare kalde det med:

<script type="text/javascript" src="validering.js"></script>

validering.js skal så bare indeholde alt imellem <script> og </script> _uden_ de tags !-)
Avatar billede roenving Novice
04. maj 2004 - 15:38 #19
Her er det feltet med name="link", altså overskriften, som valideres:

  if(f.link.value==""){
    alert('Du mangler at udfylde overskriften');
    f.link.focus();
    return false;
  }

Hvis det f.eks. er til originalt link bliver det:

  if(f.http.value==""){
    alert('Du mangler at udfylde originalt link');
    f.http.focus();
    return false;
  }
Avatar billede bb_maze Nybegynder
04. maj 2004 - 15:39 #20
Ahh, tak :D Kaster mig fluks over det ;-)

HYGGE
Avatar billede roenving Novice
04. maj 2004 - 15:41 #21
Velbekomme '-)
Avatar billede bb_maze Nybegynder
04. maj 2004 - 15:44 #22
Arhmen det spiller jo bare :D Coool :D

Er det muligt at få den til at spytte resultatet ud neden under submit knappen? Så den skriver hvis man mangler flere ting?

HYGGE
Avatar billede roenving Novice
04. maj 2004 - 15:51 #23
Ja, så bliver det en lidt anden type, men med udgangspunkt i scriptet 15:21:38:

<script type="text/javascript">
function valider(f){
var fjl="",fokus=null;
/*Herfra og til næste kommentar, kan du bare sætte ind flere gang, du skal bare ændre felt-navne og alert-tekst !-) */
  if(f.link.value==""){
    fjl += 'Du mangler at udfylde overskriften\n';
    if(!fokus)fokus = f.link;
  }
/*Kommentar slut*/

  var r = f.billede,chkd=false;
  for(i=0;r.length>i;i++)chkd = chkd||r[i].checked;
  if(!chkd){
    fjl += 'Du mangler at udfylde Mærke eller løbstype\n';
    if(!fokus)fokus = f.billede[0];
  }
  if(fokus){
    document.getElementById('fejlDiv').innerHTML = "der er følgende fejl:\n\n" + fjl;
    fokus.focus();
    return false;
  }else return true;
}
</script>


-- og så en div under submit-knappen:

<div id="fejlDiv" style="color:red;font-weight:700;"></div>

\n er den måde man laver linjeskift i en tekststreng !-)
Avatar billede bb_maze Nybegynder
04. maj 2004 - 16:49 #24
Lækkert roenving :D Men der er ét problem, jeg kan ikke få /n til at virke? Heller ikke dem du selv har brugt i scriptet...

HYGGE
Avatar billede bb_maze Nybegynder
04. maj 2004 - 16:49 #25
Fandt selv fejlen.. Man skal bare bruge <br> i stedet for /n

HYGGE
Avatar billede bb_maze Nybegynder
04. maj 2004 - 16:51 #26
Hov, mener selvfølgelig \n... Men det virker nu heller ikke..

HYGGE
Avatar billede roenving Novice
04. maj 2004 - 21:47 #27
-- Doh ...

-- det skulle jo ikke bruges i en alert, som man skal bruge den slags til !-)
Avatar billede bb_maze Nybegynder
27. maj 2004 - 00:25 #28
Tak for hjælpen!

HYGGE
Avatar billede roenving Novice
27. maj 2004 - 00:39 #29
-- og tak for point ;~}
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