Avatar billede stich Nybegynder
16. april 2004 - 23:17 Der er 11 kommentarer og
1 løsning

validering af form

Hey...Aner ikke jack om JS, såå - håber jeg lige kan hente lidt hurtig hjælp her.

Er ude efter en meget simpel form, har fundet km-lange scripts, der kan alt muligt...ikke det jeg vil have, blot et der kan validere de form-felter jeg bruger som parametre når jeg kalder funktionen. Det skal være et overordnet script, så jeg ikke behøver tilpasse den til hver form.
Jeg har noget i tankerne a la:

function validate(field1, field2, field3, field4){
    field1=mainform.field.value;
    if (field1==""){
        alert("You haven't entered the required ".field1.", please try again.");
        event.returnValue=false;
    }
    field2=mainform.field2.value;
    if (field2==""){
        alert("You haven't entered the required ".field2.", please try again.");
        event.returnValue=false;
    }
osv.

Jeg håber I kan se ideen ud fra det her.
Hvis det samtidig kan laves, så man frit kan vælge om man vil kalde funktionen med hhv. 1, 2, 3, 4 (eller flere) parametre, vil det være nice.

Mvh. STICH
Avatar billede roenving Novice
16. april 2004 - 23:24 #1
Øeh, parametre ?-)

-- jeg kan godt se, at der er parametre i din function-linje, men du smider dem jo overbord mikrosekundet efter ?o]

Er det, du ønsker, at du som parametre kan angive et hvilketsomhelst antal felter, som skal have indhold eller ?-)

Eksempelvis kan man jo bare checke at alle har noget som er forskelligt fra udgangspunktet:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Check alle felter for udfyldelse</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript" type="text/javascript">
function checkForm(f){
    var txt = "",fjl;
    var t = "\\wáàãââæåçéèêëìíîïñòóôõöøùúûüýÿ";
    var regexp = new RegExp("^["+t+"]["+t+"\\.\\-]*@["+t+"]["+t+"\\.\\-]*\\.["+t+"]{2,}*$","i");
    for(i=0;f.elements.length>i;i++){
        fld = f.elements[i]
        if ((fld.tagName=='TEXTAREA'||fld.type=="text")&&fld.value==fld.defaultValue){
            txt+="\n\t"+fld.name;
            if(!fjl)fjl = fld;
        }else if (fld.name.toLowerCase().indexOf("mail")>-1){
            if (!regexp.test(fld.value))txt+="\n\t"+fld.name+" -- ikke korrekt mail-adresse-format";
            if(!fjl)fjl = fld;
        }
    }
    if(txt!=""){
        txt = "Du mangler at udfylde disse felter:\n"+txt+"\n\nAlle felter skal udfyldes";
        alert(txt);
        fjl.select();
        fjl.focus()
        return false;
    }
    return true;
}
</script>
</head>
<body>
<br>
<form id="minForm" name="minForm" action="" method="get" onsubmit="return checkForm(this);">
Input1: <input id="minInput1" name="input1" type="text" value="Tom" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="30"><br>
Input2: <input id="minInput2" name="Input2" type="text" value="Tom" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="30"><br>
Input3: <input id="minInput3" name="input3" type="text" value="Tom" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="30"><br>
E-mail: <input id="minInput4" name="Email" type="text" value="name@domain.topDomain" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="30"><br>
Kommentar: <textarea name="Kommentar" cols="80" rows="5" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;"></textarea><br><br>
<input type="submit" value="Send data">
</form>
</body>
</html>
Avatar billede stich Nybegynder
16. april 2004 - 23:43 #2
Som sagt, aner intet om JS :) Meneh, har ikke brug for validering af email osv, ville dog være en fordel hvis formen automatisk kræve det indtastede var fx. mere end 5 karakterer lang fx. MEn det skal ind i et script, gider ikke have de ting på hvert felt, plus vil undgå at have det i kildekoden (hvis folk så vil besvære sig med at hente scriptet er det i orden de spammer :)

Men ja, vil have jeg kan kalde funktionen med de feltnavne der skal tjekkes, fx
validate(name, message, age);
hvorefter funktionen automatisk tjekker felterne name, message, age. Det behøver ikke kunne klare et utal af parametre, hvis det kan klare fra 1 til 3-4 stykker vil det være glimrende.
Avatar billede roenving Novice
17. april 2004 - 00:02 #3
Antallet er rystende ligegyldigt, hvis du vil have det skal være fleksibelt ...

Men så bliver det sådan noget som:

<script type="text/javascript">
function validate(){
  a = validate.arguments;
  f = a[0];
  for(i=1;a.length>i;i++){
    elm = f.elements[a[i]);
    if(elm.value.length<5){
      alert('Feltet '+elm.name+' skal udfyldes !-)');
      elm.focus();
      return false;
    }
  }
  return true;
}
</script>

Og så skal kaldet laves sådan:

<form action="..." method="..." onsubmit="return validate(this,'felt1','felt2');">

Bemærk, at jeg medsender form-elementet, så det er ligegyldigt hvad det hedder, samt at felt-navnene skal være tekst-strenge !-)
Avatar billede roenving Novice
17. april 2004 - 00:03 #4
Hov, der var en fejl i en linje:

    elm = f.elements(a[i]);
Avatar billede stich Nybegynder
17. april 2004 - 00:10 #5
Uuh yes, det ser nice ud!! Jeg tester det lige i løbet af aftenen (ja ok, natten nu..) Men tror næsten jeg tør takke på forhånd ;)
Avatar billede stich Nybegynder
17. april 2004 - 00:39 #6
Danke :) Virker glimrende!
Avatar billede stich Nybegynder
17. april 2004 - 00:40 #7
...men mangler lige et svar ;)
Avatar billede roenving Novice
17. april 2004 - 00:40 #8
Velbekomme '-)
Avatar billede roenving Novice
17. april 2004 - 00:42 #9
-- og tak for points ;~}
Avatar billede stich Nybegynder
17. april 2004 - 05:09 #10
Så lidt :) Meneh...der var dog lige en ting je gkom i tanke om; jeg vil gerne have mine sider valideret til xhtml 1.0 Strict, og der duer "return validate(this,'felt1','felt2');" ikke :-/ Er der en måde at fikse det på?
Avatar billede roenving Novice
17. april 2004 - 14:06 #11
Hvordan brokker validatoren sig ?-)

Som jeg har forstået det, er onsubmit="return validate(this,'felt1','felt2');" da et fuldt lovligt attribute/value-pair ...
Avatar billede stich Nybegynder
17. april 2004 - 16:51 #12
Begrænset hvor meget min hjerne kørte rundt kl. 5 :)
Fejlen er sådan set min, den bryder sig slet ikke om diverse behaviours, onclick, onsubmit osv., hverken på form-tag'et eller submit :(  crap...
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

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging