Avatar billede -thomas- Nybegynder
24. juli 2003 - 13:40 Der er 8 kommentarer og
1 løsning

Script til validering af felter

Jeg har et javascript, som tjekker, om et felt er udfyldt, inden formen sendes, men man skal selv indsætte det for hver formular og angive, hvilke felter der skal være udfyldte.

Findes der ikke et script, som selv tjekker om feltet skal være udfyldt evt. vha. en af en attribut i <input> ell. lign. Altså så jeg kan bruge samme javascript til mange formularer på forskellige sider.

Håber det er nogenlunde forståeligt...
Avatar billede longshanks Nybegynder
24. juli 2003 - 13:55 #1
noget med:
input = document.getElementsByTagName("input");
for at hente alle inputs på siden og så teste på
for(var i = 0; i < input.length; i++)
{
if(input[i].getAttribute("name") == "skalværeudfyldt")
kode...
}
Avatar billede dreamcode Nybegynder
24. juli 2003 - 13:58 #2
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function validate(objForm){

    for (var i=0;i<objForm.length;i++){
        switch(objForm[i].type){
            case "text":
                if (objForm[i].required && !objForm[i].value){
                    alert(objForm[i].error);
                    objForm[i].focus();
                    return false;
                }
            break;
        }
    }
}
//-->
</SCRIPT>


<form name="test" onsubmit="return validate(this);">

<input type="text" required=true name="blah" error="Du skal udfylde feltet ....">
<input type="text" name="blah2">
<input type="text" required=true name="blah3"  error="Du skal udfylde feltet3 ....">
<input type="text" name="blah4">
<input type="text" name="blah5">

<input type="submit" value="Send">
Avatar billede Slettet bruger
24. juli 2003 - 13:59 #3
Nu er name nok ikke det mest hensigtssmæssige, men fx class kunne være en idé.

<script type="text/javascript">
function tjekFelter(frm) {
  for (i = 0; i < frm.elements.length; i++)
    if (frm.elements[i].className == "ikkeTomt" && frm.elements[i].value == "") {
      alert("Feltet m\344 ikke v\345re tomt!");
      frm.elements[i].focus();
      return false;
    }
  return true;
}
</script>

I form-tagget:

<form ... onSubmit="return tjekFelter(this);">
Avatar billede dreamcode Nybegynder
24. juli 2003 - 14:00 #4
Du skal bare sætte required=true for påkrævede felter og så lave den fejltekst der skal komme op .... hvis du vil have det skal understøtte checkboxe og radiobuttons kan du sikkert godt selv se princippet

DC
Avatar billede longshanks Nybegynder
24. juli 2003 - 14:02 #5
Kan man bare finde på nogle attributter og teste på ?

såsom <input skalvaereder=true> osv....?
Avatar billede -thomas- Nybegynder
24. juli 2003 - 14:03 #6
dreamcode - dit ser umiddelbart godt ud, da det hverken bruger name eller class (bruger begge i forvejen). Kunne man lave det så den selv udskriver hvilke felter der mangler ligesom nedenstående. Den kunne evt bruge ALT attributten til navnet ell lign?
Jeg bruger i forvejen dette, men det er ikke hensigtsmæssigt til mange forskellige formularer:

function verify(f) {
                var required_fields = new Array("Navn","Adresse","Postnr.","By");
                var required_names  = new Array("Navn","Adresse","Postnr.","By");
                var empty_fields = "";
                var errors = "";
                var tagName;
                var reqName;
                var frmName;
                var msg;

                for(var i = 0; i < f.length; i++) {
                  var e = f.elements[i];
                  for(ii = 0; ii < required_fields.length; ii++){
                    tagName = e.name;
                    reqName = required_fields[ii];
                    if(tagName == reqName) {
                      //alert("e.value " + e.value)
                      if((e.value == null) || (e.value== "") || isBlank(e.value)) {
                          var frmName = required_names[ii];
                          empty_fields += "\n" + frmName;
                          break;
                      }
                    }
                  }
                }

                if(empty_fields == "") {
                    return true;
                } else {
                    msg = "Udfyld venligst de manglende felter, og tryk send igen:    \n"
                        + "                                                            "
                        + empty_fields + "\n";
                    alert(msg);
                    return false;

                }
              }
Avatar billede dreamcode Nybegynder
24. juli 2003 - 14:11 #7
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function validate(objForm){
    var errorMessage = "";
    var firstError = "";
    for (var i=0;i<objForm.length;i++){
        switch(objForm[i].type){
            case "text":
                if (objForm[i].required && !objForm[i].value){
                    errorMessage += objForm[i].feltnavn + "\n";
                    if (!firstError)
                        firstError = objForm[i];
                }
            break;
        }
    }
    if (errorMessage){
        alert("Du har ikke udfyldt:\n" + errorMessage);
        firstError.focus();
        return false;
    }
}
//-->
</SCRIPT>


<form name="test" onsubmit="return validate(this);">

<input type="text" required=true name="blah" feltnavn="Felt1">
<input type="text" name="blah2">
<input type="text" required=true name="blah3" feltnavn="Felt2">
<input type="text" name="blah4">
<input type="text" name="blah5">

<input type="submit" value="Send">
Avatar billede -thomas- Nybegynder
24. juli 2003 - 14:12 #8
Sætter pointene lidt op og håber jeg får et svar :)
Avatar billede -thomas- Nybegynder
24. juli 2003 - 14:13 #9
Der var du hurtig! Tak for det - lige hvad jeg manglede.
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