Avatar billede jobb Nybegynder
01. juni 2007 - 18:33 Der er 12 kommentarer og
1 løsning

kodestump virker ikke

Hej Eksperter

Jeg har fået noget kode af roenving
Men jeg kan ikke få den til at virke i delen hvor den tjekker for radio og checkbox er der nogle der kan overskue hvad der er galt

<script type="text/javascript">
function valider(f){
  var e = f.elements,val,min,max,fname,tval,chks = [], rads = [];
  for(i=0;e.length>i;i++){
    if( (e[i].type=='text' || e[i].type=='textarea') && e[i].name.indexOf('val')!=0){
      fname = max = min = 0;
      val = e['val'+e[i].name].value;
      tval = val.split("(")[1].split(")");
      fname = tval[1];
      min = tval[0];
      if(min.indexOf(",")>0){
        max = +min.split(",")[1];
        min = +min.split(",")[0];
      }
      val = val.split("(")[0];
     
      if(min&&min>e[i].value.length||max&&e[i].value.length>max){
        alert('Værdien i ' + ((fname)?'"'+fname+'"':e[i].name) + ' overholder ikke kravene til længde')
        e[i].focus();
        return false;
      }
     
      var t = "\\wáàãââæåçéèêëìíîïñòóôõöøùúûüýÿ";
      var regexpmail = new RegExp("^["+t+"]["+t+"\\.\\-\\+]*@["+t+"]["+t+"\\.\\-]*\\.["+t+"]{2}["+t+"\\.\\-\\/]*$","i");

      switch(val){
        case('char'):
          if(!/^\w+$/i.test(e[i].value)){
            alert('Værdien i ' + ((fname)?'"'+fname+'"':e[i].name) + ' overholder ikke kravet om kun at bruge tegn')
            e[i].focus();
            return false;
          }
        break;
        case('caps'):
          if(!/^[A-Z]+$/.test(e[i].value)){
            alert('Værdien i ' + ((fname)?'"'+fname+'"':e[i].name) + ' overholder ikke kravet om kun at bruge store bogstaver')
            e[i].focus();
            return false;
          }
        break;
        case('number'):
          if(!/^\d+$/.test(e[i].value)){
            alert('Værdien i ' + ((fname)?'"'+fname+'"':e[i].name) + ' overholder ikke kravet om kun at bruge tal')
            e[i].focus();
            return false;
          }
        break;
        case('curr'):
          if(!/^\d+([,\.]\d{3})*([,\.]\d\d)?$/.test(e[i].value)){
            alert('Værdien i ' + ((fname)?'"'+fname+'"':e[i].name) + ' overholder ikke kravet om at bruge valuta-notation')
            e[i].focus();
            return false;
          }
        break;
        case('mail'):
          if(!regexp.test(e[i].value)){
            alert('Værdien i ' + ((fname)?'"'+fname+'"':e[i].name) + ' overholder ikke kravet om en mail-adresse')
            e[i].focus();
            return false;
          }
        break;
        default:
       
      }
    }else if(e[i].type == "checkbox" && f.elements["val" + e[i].name]){
      if(!chks[e[i].name])
        chks[e[i].name] = "checkbox";
    }else if(e[i].type == "radio" && f.elements["val" + e[i].name]){
      if(!rads[e[i].name])
        rads[e[i].name] = "radio";
    }
  for(n in chks){
    var chs = f.elements[n],chkd = false;
    if(chs.length){
      for(i=0,im=chs.length;im>i;i++)
        chkd = chkd || chs[i].checked;
      if(!chkd){
        alert("I " + n + " er der ikke foretaget et valg");
        chs[0].focus();
        return false;
      }
    }
  }
  for(n in rads){
    var rds = f.elements[n],chkd = false;
    if(rds.length){
      for(i=0,im=rds.length;im>i;i++)
        chkd = chkd || rds[i].checked;
      if(!chkd){
        alert("I " + n + " er der ikke foretaget et valg");
        rds[0].focus();
        return false;
      }
    }
  }
  return true;
}
</script>

<form id="minForm" name="minForm" onsubmit="return valider(this);">
Store bogstaver: <input id="minInput" name="minInput" type="text" value="KUN CAPS" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20">
<input type="hidden" name="valminInput" value="caps(1,1)Store bogstaver">
<br>
Pris: <input id="minInput2" name="minInput2" autocomplete='off' type="text" value="Pris" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="20">
<input type="hidden" name="valminInput2" value="curr(1,1)TEST"><br>
<input type="radio" value="test123" name="radio"><br>
<input type="hidden" name="valradio"><br>
<input type="submit" value="Test">
</p>
</form>
Avatar billede w13 Novice
01. juni 2007 - 18:49 #1
Hvad virker ikke? Ignorerer den bare den del?
Avatar billede jobb Nybegynder
01. juni 2007 - 20:13 #2
Ja den tjekker ikke for radio grupper og for checkbokse
Avatar billede w13 Novice
01. juni 2007 - 21:54 #3
Jeg kan ikke umiddelbart finde fejlen - men jeg får at vide, der mangler et } sidst i javascript-koden. Det kunne vel tænkes, dette forårsagede fejlen?
Avatar billede roenving Novice
02. juni 2007 - 00:42 #4
Der mangler en slut-tuborg lige før linjen, der kigger efter chks:

...
    }else if(e[i].type == "checkbox" && f.elements["val" + e[i].name]){
      if(!chks[e[i].name])
        chks[e[i].name] = "checkbox";
    }else if(e[i].type == "radio" && f.elements["val" + e[i].name]){
      if(!rads[e[i].name])
        rads[e[i].name] = "radio";
    }
  } // <-- denne tuborg er desværre overset og udeladt i mit forslag ...
  for(n in chks){
    var chs = f.elements[n],chkd = false;
    if(chs.length){
      for(i=0,im=chs.length;im>i;i++)
...
Avatar billede jobb Nybegynder
02. juni 2007 - 16:17 #5
Nu har jeg fået fjernet min syntaks fejl men den validere ikke radio knappen den lader som ingenting og køre vider når jeg submitter
Avatar billede roenving Novice
02. juni 2007 - 23:56 #6
Kan du linke til et eksempel ?-)
Avatar billede jobb Nybegynder
03. juni 2007 - 10:49 #7
Avatar billede roenving Novice
03. juni 2007 - 12:20 #8
Det er fordi den tester for længde først, hvis du vil validere en alene skal vi tilføje noget mere kode, for der kan en løkke ikke bruges !-)

  for(n in rads){
    var rds = f.elements[n],chkd = false;
    if(rds.length){
      for(i=0,im=rds.length;im>i;i++)
        chkd = chkd || rds[i].checked;
    }else chkd = rds.checked;
    if(!chkd){
      alert("I " + n + " er der ikke foretaget et valg");
      if(rds.length)rds[0].focus();
      else rds.focus();
      return false;
    }
  }
Avatar billede jobb Nybegynder
03. juni 2007 - 14:32 #9
Ok det var forde jeg ikke havde mere end en radio/checkbox men det sidste kode fik den til at virke som jeg gerne ville have jeg takker mange gange for den store hælp du må gerne smide et svar på begge ?
Avatar billede roenving Novice
04. juni 2007 - 00:05 #10
Velbekomme '-)
Avatar billede roenving Novice
04. juni 2007 - 23:22 #11
-- og tak for point ;~}
Avatar billede jobb Nybegynder
05. juni 2007 - 15:50 #12
Velbekommen svarer du også på spm/779166
Avatar billede roenving Novice
06. juni 2007 - 00:44 #13
-- det er jo ikke nødvendigt at kaste så mange point efter det, men okay så !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