Avatar billede smads Nybegynder
26. november 2003 - 22:18 Der er 9 kommentarer

Markering af uudfyldt felt i formular

Hej Eksperter

Er der nogen der kan hjælpe mig med hvordan jeg får markeret et uudfyldt felt i en formular såfremt dette ikke er udfyldt?

Dvs. en bruger indtaster oplysninger i en formular og inden det indsættes i databasen bliver det valideret. Såfremt et felt ikke er udfyldt eller ikke er korrekt udfyldt får brugeren besked herom og vises tilbage til formularen hvor det pågældende felt er markeret.

Håber der er nogen der kan hjælpe!
Avatar billede exp Juniormester
26. november 2003 - 22:23 #1
Avatar billede roenving Novice
26. november 2003 - 22:24 #2
f.eks. via et javascript, som sætter focus:

<script type="text/javascript">
function fokuser(){
var fld = "<?=feltValgt?>";
if(fld!=""){
document.formNavn.elements[fld].focus();
}
}
</script>

-- som kaldes onload:

<body onload="fokuser()">
Avatar billede roenving Novice
26. november 2003 - 22:25 #3
-- og for at få det fra dit php-script serverside, skal det selvfølgelig være:

var fld = "<?=$feltValgt?>";
Avatar billede ultragames Nybegynder
26. november 2003 - 22:49 #4
hmm!.. kan man ike lave noget javascript som validerer alle felter, og det tekst felt som = '', laves der "focus()" på?
Avatar billede roenving Novice
26. november 2003 - 23:01 #5
Jo, f.eks.

<!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.tagName=='TEXTAREA'||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>
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 roenving Novice
26. november 2003 - 23:04 #6
Hov, det skal laves sådan:

<script language="javascript" type="text/javascript">
function checkForm(f){
    var txt = "",fjl;
    var regexp = /^[\w\.\-_]+@[\w\-_]+\.[\w\.\-_]+$/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.focus()
        return false;
    }
    return true;
}
</script>
Avatar billede roenving Novice
26. november 2003 - 23:06 #7
-- og et lille raffinement:

    if(txt!=""){
        txt = "Du mangler at udfylde disse felter:\n"+txt+"\n\nAlle felter skal udfyldes";
        alert(txt);
        fjl.select();
        fjl.focus();
        return false;
    }
Avatar billede smads Nybegynder
27. november 2003 - 08:20 #8
Jeg vil forsøge mig med nogle af jeres forslag senere i dag - men egentlig havde jeg håbet på at kunne lave selve valideringen i php og så bare bruge JavaScript til at lave selve markeringen af det manglende felt - eksempelvis med en lille rød '*'.
Avatar billede roenving Novice
28. november 2003 - 00:09 #9
Hvadfor bruge php til at lave noget og så javascript til noget andet ?-)

Mit eget udgangspunkt ville være:

Lav så meget som muligt med javascript (så det undgår nye loads fra serveren !-)

-- men undlad ikke at checke server-side !-)
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