Avatar billede dannyboy Nybegynder
14. januar 2004 - 22:05 Der er 11 kommentarer og
1 løsning

Validering - Mindst 1 felt skal være udfyldt

Jeg har 15 inputfelter hvor brugeren skal skrive beløb i.
Det er IKKE obligatorisk at ALLE felter skal udfyldes, men
for at formularen skal kunne sende skal mindst 1 felt være
udfyldt.

Kan det gøres på en let måde??
Avatar billede eagleeye Praktikant
14. januar 2004 - 22:37 #1
Det kan laves med en validate funktion som kaldes onsubmit. Denne er delt i to en funktion som tæller hvor mange felter af typen text der indeholder noget. Er der ikke udfyldt mindst en kommer en pop-up op:


<script language="javascript">
function antalOk(theform) {
var antal = 0;
if (document.all || document.getElementById) {
  for (i = 0; i < theform.length; i++) {
    var tempobj = theform.elements[i];
    if (tempobj.type.toLowerCase() == "text" && tempobj.value != '')
      antal = antal + 1;
  }
}
return antal;
}


function validate(theform) {
  var antal;
  antal = antalOk(theform);
  if (antal < 1) {
    alert ("Minimum 1 skal vælges");
    return false;
  }
  return true;
}
</script>

<form method="post" action="" onsubmit="return validate(this);">
<input type="text" name="belob1"><br>
<input type="text" name="belob2"><br>
..
.
Avatar billede mm12010 Nybegynder
14. januar 2004 - 23:19 #2
<script language="javascript">
function validate(frm){
  tjeck=false;
  for(i=0;i<frm.elements.length;i++){
    if(frm.elements[i].type=="text"&&frm.elements[i].value!=""){
      tjeck=true;
      break;
      }
    }
    if(!tjeck){
      alert("Minimum 1 skal vælges");
      return false;
      }
  return true;
  }
</script>

<form method="post" action="" onsubmit="return validate(this);">
<input type="text" name="belob1"><br>
<input type="text" name="belob2"><br>
...
Avatar billede mm12010 Nybegynder
14. januar 2004 - 23:22 #3
function validate(frm){
  for(i=0;i<frm.elements.length;i++){
    if(frm.elements[i].type=="text"&&frm.elements[i].value!=""){
      return true;
      }
    }
    alert("Minimum 1 skal udfyldes");
    return false;
  }
Avatar billede dannyboy Nybegynder
15. januar 2004 - 00:23 #4
mm12010, hvad er forskellen på de to funktioner?
Avatar billede mm12010 Nybegynder
15. januar 2004 - 09:31 #5
i praksis er der ikke meget forskel, men min er væsentligt mere optimeret - mere enkel og effektiv!-)
Avatar billede dannyboy Nybegynder
15. januar 2004 - 13:54 #6
Ja, det er også min opfattelse, men hvad er forskellen på de 2 forskellige funktioner DU har postet?
Avatar billede mm12010 Nybegynder
15. januar 2004 - 14:02 #7
også bare optimering ;-)
Avatar billede dannyboy Nybegynder
15. januar 2004 - 16:12 #8
OK, kan jeg presse citronen og bede om en ekstra lille validering indbygget af 3 inputfelter med følgende names "navn" "mail" "telefon" - de skal bare være udfyldte.
Avatar billede eagleeye Praktikant
15. januar 2004 - 16:24 #9
Hvem spørger du??
Skal den også tjekke på formatet af beløbet,så man ikke bare kan skriv "abc" og så acceptere det som et beløb?
Avatar billede mm12010 Nybegynder
15. januar 2004 - 22:20 #10
function validate(frm){
  felter=new Array("navn","mail","telefon");
  for(a=0;a<felter.length;a++){
    if(frm.elements[felter[a]].value==""){
      alert(felter[a]+" skal udfyldes");
      frm.elements[felter[a]].focus();
      return false;
      }
    }
  for(i=0;i<frm.elements.length;i++){
    if(frm.elements[i].name!=felter[0]&&frm.elements[i].name!=felter[1]&&frm.elements[i].name!=felter[2]){
      if(frm.elements[i].type=="text"&&frm.elements[i].value!=""){
        return true;
        }
      }
    }
    alert("udfyld et beløb");
    return false;
  }
Avatar billede dannyboy Nybegynder
15. januar 2004 - 23:16 #11
mm12010 lav et svar
Avatar billede mm12010 Nybegynder
15. januar 2004 - 23:18 #12
svar :o)
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