Avatar billede blaatand Nybegynder
20. november 2003 - 23:36 Der er 19 kommentarer og
1 løsning

Tjek for tomme forms

Jeg er sindsyg dårlig til javascript, og skal bruge et lille script som tjekker om forms er udfyldt eller ej. Hvis de ikke er skal den komme op med at brugeren er dum og skal udfylde alle felterne 8-)

Fandt noget her:
http://www.eksperten.dk/spm/218671

Men kan kun få scriptet til at komme op med fejl hele tiden når man trykker submit. Forstår ikke hvad som skal ændres i funktionen validate() hvilket nok er mit problem 8-)

Sådan ser hele min form fil ud nu:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
function validate(){


    if (!(check_tom(document.form.felt1.value))){
        alert('Please fill out the field "Felt1"!');
        document.form.felt1.focus();
        return false;
    }

    if (!(isFloat(document.form.felt1.value))){
        alert('Please fill out the field "Felt1" correct!');
        document.form.felt1.focus();
        return false;
    }
    if (!(check_tom(document.form.felt2.value))){
        alert('Please fill out the field "Felt2"!');
        document.form.felt2.focus();
        return false;
    }
    if (!(isFloat(document.form.felt2.value))){
        alert('Please fill out the field "Felt2" correct!');
        document.form.felt2.focus();
        return false;
    }       
  return true;
}
// funktion der checker om et formularfelt er tomt
function check_tom(text) {
  return (text.length > 0);
}
// funktion der kigger efter et gyldigt tal med US settings
function isFloat(s){
var i;
var seenDecimalPoint = false;

    if (!check_tom(s)){
        return false;
    }
    if (s == ".") {
        return false;
    }

    // Search through string's characters one by one
    // until we find a non-numeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++){ 
    // Check that current character is number.
    var c = s.charAt(i);

        if ((c == ".") && !seenDecimalPoint){
            seenDecimalPoint = true;
        }
        else {
            if (!isDigit(c)){
              return false;
            }
        }
    }
    // All characters are numbers.
    return true;
}

function isDigit(c){
    return ((c >= "0") && (c <= "9"))
}
</script>
</head>

<body>
<form name="form" method="get" action="success.asp" onSubmit="return validate();">
  <p>
    <input type="text" name="felt1">
  </p>
  <p>
    <input type="text" name="felt2">
  </p>
  <p>
    <input type="submit" name="Submit" value="Submit">
  </p>
</form>
</body>
</html>
Avatar billede skovenborg Nybegynder
20. november 2003 - 23:39 #1
hvordan ser din form ud - så kan det hurtigt laves ?-)
Avatar billede roenving Novice
20. november 2003 - 23:45 #2
Hvor har du kigget henne, skovenborg ?-)

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
function validate(){
    if (!(check_tom(document.form1.felt1.value))){
        alert('Please fill out the field "Felt1"!');
        document.form1.felt1.focus();
        return false;
    }
    if (!(check_tom(document.form1.felt2.value))){
        alert('Please fill out the field "Felt2"!');
        document.form1.felt2.focus();
        return false;
    }
  return true;
}
// funktion der checker om et formularfelt er tomt
function check_tom(text) {
  return (text.length > 0);
}
// funktion der kigger efter et gyldigt tal med US settings
function isFloat(s){
    var reg = /\d+\.\d?/g;
    return (s.match(reg))?true:false;
}
</script>
</head>
<body>
<form name="form" method="get" action="success.asp" onSubmit="return validate();">
  <p>
    <input type="text" name="felt1">
  </p>
  <p>
    <input type="text" name="felt2">
  </p>
  <p>
    <input type="submit" name="Submit" value="Submit">
  </p>
</form>
</body>
</html>
Avatar billede blaatand Nybegynder
20. november 2003 - 23:51 #3
Det fungerer ikke... den giver slet ikke fejl hvis der ikke er noget i feltet.

http://80.160.108.32/test.mohaa.dk/JS-formsubmit/
Avatar billede roenving Novice
20. november 2003 - 23:53 #4
Hov, glemte også at rette denne linje (fjerner normalt automatisk reserverede ord !-)

<form name="form1" method="get" action="success.asp" onSubmit="return validate();">
Avatar billede blaatand Nybegynder
20. november 2003 - 23:56 #5
sajt det funger, post lige svar :D

Kan man så bruge denne til at tjekke hele formen igennem alle formfelter? f.eks 20 felter :-)
Avatar billede blaatand Nybegynder
20. november 2003 - 23:59 #6
Altså ved at tilføje ekstra linier vel og mærke...
Avatar billede skovenborg Nybegynder
20. november 2003 - 23:59 #7
...jeg viste ikke det var hans form - sorry (troede bare han havde kopieret det der script fra spørgsmålet, men måske skulle jeg bare have kigget der ;-)
Avatar billede roenving Novice
21. november 2003 - 00:01 #8
Som det er skrevet her kan man bare duplikere de stumper, hvor de specifikke felter er nævnt ...

-- men med en rigtig stor form kunne det blive interessant at have en anden form for check, feks. sådan:

<!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 = "";
    var regexp = /^[\w\.\-_]+@[\w\-_]+\.[\w\.\-_]+$/i;
    for(i=0;f.elements.length>i;i++){
        fld = f.elements[i]
        if (fld.type=="text"&&fld.value==fld.defaultValue){
            txt+="\n\t"+fld.name;
        }else if (fld.name.toLowerCase().indexOf("mail")>-1){
            if (!regexp.test(fld.value))txt+="\n\t"+fld.name+" -- ikke korrekt mail-adresse-format";
        }
    }
    if(txt!=""){
        txt = "Du mangler at udfylde disse felter:\n"+txt+"\n\nAlle felter skal udfyldes";
        alert(txt);
        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><br>
<input type="submit" value="Send data">
</form>
</body>
</html>
Avatar billede blaatand Nybegynder
21. november 2003 - 00:02 #9
hehe :D

Nej jeg har sku rodet lidt med det, har ikke bare kopieret og set om det virkede 8-)
Avatar billede blaatand Nybegynder
21. november 2003 - 00:04 #10
Den ville være god hvis det ikke lige var for at der er et mailtjek i den, dette skal være rene forms :P
Avatar billede blaatand Nybegynder
21. november 2003 - 00:05 #11
Jeg bruger asp med querystrings, og der ville det måske være smart og lave noget kode som du viste der, men den skal bare ikke tjekke for e-mail, da det er noget admin ting hvis folk er regget den skal bruges i.
Avatar billede roenving Novice
21. november 2003 - 00:06 #12
Mail-checket bliver kun aktiveret hvis formen har et input med 'mail' i navnet, så det bliver ikke til en fejl !-)
Avatar billede blaatand Nybegynder
21. november 2003 - 00:07 #13
ok, det skal jeg så tjekke op på da... =)

men svarer du lige så du kan få lidt pinde i systemet =)
Avatar billede roenving Novice
21. november 2003 - 00:11 #14
Velbekomme '-)
Avatar billede blaatand Nybegynder
21. november 2003 - 00:13 #15
Tjekkede lige, og koden virker kun på text felter... ikke text areas :(
Avatar billede roenving Novice
21. november 2003 - 00:18 #16
Det kan vi nemt ændre, denne linje ændres:

        if (fld.type=="text"&&fld.value==fld.defaultValue){

til:

        if ((fld.tagName=='TEXTAREA'||fld.type=="text")&&fld.value==fld.defaultValue){
Avatar billede blaatand Nybegynder
21. november 2003 - 00:21 #17
så fungerer det til begge slags?
Avatar billede blaatand Nybegynder
21. november 2003 - 00:23 #18
Det gør det kan jeg se.

Mange tak for hjælpen, den var stor 8-)
Avatar billede roenving Novice
21. november 2003 - 00:26 #19
-- og tak for points ;~}
Avatar billede blaatand Nybegynder
21. november 2003 - 02:36 #20
Jeg løb ind i et træ med dette script ser det ud til. Ville have filforme ind også, og rettede det selv til, det blev neat nok, og fungerede på fileforms fint...men når jeg implanterer det med upload scriptet, så kommer den med fejl :(

Hvis du ved hvad det kunne være så:
http://www.eksperten.dk/spm/430461

:)
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