Avatar billede danic Nybegynder
18. maj 2004 - 18:56 Der er 5 kommentarer

Check af form input som funktion

Jeg ønsker at lave et check af denne form, checket skal ligge som en funktion og skal kunne håntere flere input felter på samme tid.

checkforminput(name, "Du skal udfylde feltet");
<html>
<form name="form" onsubmit="return valider(this)">
<input TYPE="TEXT"  NAME="name">
</html>

<? //starter php form
funntion checkforminput($formnavn, $beskeden) {
?>
function valider(f){
  if(f.<?=$formnavn?>.value==""){
        alert("<?print"$beskeden";?>!");
    f.<?=$formnavn?>.focus();
    return false;
  }
return false;
  }
else return true;
} // Javascript funktion slut
<?
} // phpfunktion slut
?>
Avatar billede olebole Juniormester
18. maj 2004 - 19:51 #1
<ole>

Det er lidt svært at se, hvad det er, du gerne vil opnå, men generelt kan man sige, at JavaScript-funktioner kan du bruge, når siden ligger i browseren.
PHP-funktioner kan du derimod kun bruge på serveren. Når dokumentet har forladt serveren, kan du ikke længere afvikle PHP.

/mvh
</bole>
Avatar billede danic Nybegynder
18. maj 2004 - 21:15 #2
Jeg ønsker at forenkle min kode så jeg ikke har 25 forms med hver sin fom valider, er det muligt at ligge den i en include fil eller lign. således at der er mange forms men kun en fom valider?
Avatar billede olebole Juniormester
19. maj 2004 - 01:39 #3
Det kunne du for den sags skyld godt - men der er en ting, jeg ikke rigtig forstår:
Hvorfor vil du definere fomnavnet, når du i JS-funktionen øjensynligt får formen medsendt som argument?
Er du overhovedet sikker på, det giver dig nogen besparelse at lave en PHP-funktion til at skrive JS-funktionen med? På hver side, hvor den skal bruges, skal PHP-funktionen jo så kaldes med hvert formfelts navn med tilhørende besked og validerings-betingelser. Jeg formoder, du ikke bare checker om feltet er udfyldt, men om en e-mail er valid, en dato er rigtig formateret, et telefonnummer består af tal, osv. På mig virker det lidt som overkill  :)
/mvh
Avatar billede danic Nybegynder
19. maj 2004 - 11:33 #4
Jeg vil kun checke om feltet er udfyldt, kan det gøres mere simpelt?
Avatar billede roenving Novice
19. maj 2004 - 13:20 #5
Måske noget sådant, som her har mail- og beløbs-check med, men det kan jo fjernes !-)

<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");
    var regcurr = /^([\-\+]?[1-9]\d{0,2}((\.\d{3})*|\d*)(\,\d{2})?)?$/;
    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;
        }else if (fld.name.toLowerCase().indexOf("curr")>-1){
            if (!regcurr.test(fld.value))txt+="\n\t"+fld.name+" -- beløb skal angives i et korrekt 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>

-- den arbejder iøvrigt også med defaultValue, så den er ikke beregnet til forms, hvor værdier kan være forud udfyldt, men det er så kun defaultValue, som skal udskiftes med "" ...
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