Avatar billede blackscorpion Nybegynder
18. september 2005 - 16:08 Der er 72 kommentarer og
1 løsning

modificering af validerings snask

hey eksperter.

fik lavet dette som et led til en kalender.

  <script type="text/javascript">
    function valider(){
      var kl1 = document.getElementById('kl1');
      var kl2 = document.getElementById('kl2');
      var regexp = new RegExp('([0-1][0-9]|2[0-3])\.[0-5][0-9]$');
     
      if (kl1.value == kl2.value) {
        alert('Du skal angive 2 forskellige tidspunkter.');
        return false;
      }
      else if(kl1.value > kl2.value) {
        alert('Det angivet \'Fra\' tidspunkt er senere det angivet \'Til\' tidspinkt');
        return false;
      }
      else if (!kl1.value.match(regexp)){
        alert('Det angivet \'Fra\' tidspunkt er ugyldigt.');
        return false;
      }
      else if (!kl2.value.match(regexp)) {
        alert('Det angivet \'Til\' tidspunkt er ugyldigt.');
        return false;
      }
      else{
        return true;
      }
    }
  </script>

Har nu tænkt mig at genbruge det.
men skal have den til at tjekke om tingene er tal.
er tingene udfyldt.
osv.

har en cv formular.

hvor der skrives cpr, telefon numre osv ind.

håber i forstår.
Avatar billede olebole Juniormester
18. september 2005 - 16:32 #1
<ole>

- og hvordan er de nøjagtige formater for det, du vil acceptere?

/mvh
</bole>
Avatar billede blackscorpion Nybegynder
18. september 2005 - 16:35 #2
altså cpr, må kun indeholde tal.
det samme med telefon og mobil.

og så skal den bare tjekke om de andre felter er udfyldt.

har trimmet alt det der if-else væk, på nær en, og fik det til at virke med at tjekke for tal.

men der får den det var en..

2 sec.

    <script type="text/javascript">
      function valider(this){
        var regexp = new RegExp('[0-9]$');
       
        if (!this.value.match(regexp)) {
          alert('Dit Cpr Nummer må ikke indeholde bogstaver.');
          return false;
        }
        else{
          return true;
        }
      }
  </script>

<input class="input" type="text" onblur="return valider(this);" maxlength="6" name="cpr_part1" style="width: 100px; height: 14px; padding-left: 3px">
Avatar billede olebole Juniormester
18. september 2005 - 16:38 #3
Den kan du fint bruge til telefonnumre (hvis der ikke må være f.eks. mellemrum) - men i et CPR-nummer er der jo en bindestreg.
Derfor: Hvad er de nøjagtige formater?  :)
Avatar billede blackscorpion Nybegynder
18. september 2005 - 16:39 #4
præcist som jeg har fortalt dig. *G*

har splittet cpr op.

<input class="input" type="text" onblur="return valider(this);" maxlength="6" name="cpr_part1" style="width: 100px; height: 14px; padding-left: 3px"> - <input class="input" id="kl2" type="text" maxlength="4" name="cpr_part2" style="width: 84px; height: 14px; padding-left: 3px"> 

:D

så folk kan ikke lave den bindestreg, eller mellemrum, eller kolon eller hvad de nu kan finde på. :D
Avatar billede blackscorpion Nybegynder
18. september 2005 - 16:46 #5
men pt kan jeg ikke få den til noget som helst.
Avatar billede blackscorpion Nybegynder
18. september 2005 - 16:51 #6
eneste jeg kan få til at virke er det her:

    <script type="text/javascript">
      function valider(){
        var kl1 = document.getElementById('cpr_part1');
        var regexp = new RegExp('[0-9]$');
       
        if (!kl1.value.match(regexp)) {
          alert('Dit Cpr Nummer må ikke indeholde bogstaver.');
          return false;
        }
        else{
          return true;
        }
      }
  </script>

<input class="input" id="cpr_part1" type="text" onblur="return valider();" ... >

Og det holder ikke... for så skal jeg tilføje id til alle sammen..
Avatar billede roenving Novice
18. september 2005 - 16:54 #7
Brug ikke this i funktionen, men brug en anden identifikator, f.eks. inp:

<input class="input" type="text" onblur="return valider(this);" maxlength="6" name="cpr_part1" style="width: 100px; height: 14px; padding-left: 3px">

<script type="text/javascript">
      function valider(inp){
        var regexp = new RegExp('^[0-9]+$');
       
        if (!inp.value.match(regexp)) {
          alert('Dit Cpr Nummer må ikke indeholde bogstaver.');
          inp.focus();
          return false;
        }
        return true;
      }
  </script>
Avatar billede blackscorpion Nybegynder
18. september 2005 - 16:59 #8
okey og hvis jeg så vil f.eks. teste om fornavn er udfyldt, så vil den jo så komme op og brokke sig... derfor jeg var lidt ude efter navn, så den kigger på det er meningen det skal være tal eller bogstaver.
Avatar billede blackscorpion Nybegynder
18. september 2005 - 17:03 #9
så tænkte lidt på om man ikke kunne lave noget ala.

return valider(tal); , return valider(udfyldt); og return valider(email);

og så lave en

if(inp == "tal") {
if(bla bla bla ikke passer) {
  alert("Du har lige dummet dig bigtime..");
  return false;
}
}
elseif (inp == "udfyldt") {
if ( er den udfyldt) {
  alert ("buuuh!");
  return false;
}
}

osv osv osv
Avatar billede blackscorpion Nybegynder
18. september 2005 - 17:12 #10
er ude i noget ala

<script type="text/javascript">
      function valider(inp,p){
     
        var type = 'p';     
        var regexp = new RegExp('^[0-9]+$');
       
        if (!inp.value.match(regexp) && type.value=='tal') {
          alert('Dit Cpr Nummer må ikke indeholde bogstaver.');
          inp.focus();
          return false;
        }
        return true;
      }
  </script>

onblur="return valider(this, 'tal');"

men virker heller ikke. *G*
Avatar billede roenving Novice
18. september 2005 - 17:14 #11
<script type="text/javascript">
      function valider(inp,p){
     
        var regexp = new RegExp('^[0-9]+$');
       
        if (!inp.value.match(regexp) && p=='tal') {
          alert('Dit Cpr Nummer må ikke indeholde bogstaver.');
          inp.focus();
          return false;
        }
Avatar billede blackscorpion Nybegynder
18. september 2005 - 17:17 #12
så var jeg da ikke helt galt på den. :D :D

men holder den lige åbent, for der kommer sikkert mere. :D

men hvis jeg skal tjekke om en ting er udfyldt??
og hvordan ser en regexp ud for at tjekke om det indeholder @ og et . ??

'^\@|\.+$' ???
Avatar billede blackscorpion Nybegynder
18. september 2005 - 17:20 #13
if(!inp.value && t=="udfyldt") {
        alert('Du skal udfylde dette felt.');
        inp.focus();
        return false;
        }

udfyldningen. *GGG* :D
Avatar billede roenving Novice
18. september 2005 - 17:21 #14
F.eks.

var regmail = new RegExp("^.*@[\\w][\\w\\.-]*\\.[a-z]{2-6}$","i");
Avatar billede blackscorpion Nybegynder
18. september 2005 - 17:24 #15
kan man så også godt lave en

RegExp("^[a-åA-Å}$"); ??

eller vil den kun til z ??

altså a-zA-Z ?
Avatar billede blackscorpion Nybegynder
18. september 2005 - 17:27 #16
ser det hele sådan her ud.

<script type="text/javascript">
      function valider(inp,t){
     
        var regtal = new RegExp('^[0-9]+$');
        var regmail = new RegExp("^.*@[\\w][\\w\\.-]*\\.[a-z]{2-6}$","i");
       
        if(!inp.value.match(regtal) && t=="tal") {
          alert('Dit Cpr Nummer må ikke indeholde bogstaver.');
          inp.focus();
          return false;
        }       
       
        if(!inp.value && t=="udfyldt") {
        alert('Du skal udfylde dette felt.');
        inp.focus();
        return false;
        }
       
        if(inp.value.match(regmail) && t=="email") {
          alert('Din email er ugyldig.');
          inp.focus();
          return false;
        }
       
        return true;
      }
  </script>

Men har lagt mærke til at hvis man f.eks. skriver bogstaver i cpr, og så klikker ned på fornavn, så låser den med henholdvis at spytte fejl ud på cpr og derefter fejl ud på fornavn, og der er intet du kan gøre, andet end at kværne den i process linien. :(

nogen måde man kan undgå det??
Avatar billede blackscorpion Nybegynder
18. september 2005 - 17:28 #17
sådan at den efter første fejl, stopper med at tjekke ?
Avatar billede roenving Novice
18. september 2005 - 17:35 #18
Jeg ville selv teste, når hele formen blev submittet ...

-- og til regexpen med bogstaver, så skal du jo ret langt ud, da også é, ï og mange andre bogstaver er mulige i nave, som findes i Danmark !-)

-- f.eks. har jeg denne streng til regexp-konstruktion:

  var ordtegn = "\\wáàãââæåçéèêëìíîïñòóôõöøùúûüýÿ";

\w betyder bogstaver, tal og _ ...

-- og begrebet bogstaver tolkes højst forskelligt i browserne, IE accepterer kun a-z, mens FF tager de bogstaver, som er lovlige til det locale, som er angivet i bruger-indstillingerne !o]
Avatar billede blackscorpion Nybegynder
18. september 2005 - 17:37 #19
okey så det vil være smartest bare at tjekke om den er udfyldt, som jeg gør nu.

roger. :D

men hvis man tester får formen bliver submitteret, så tjekker den da ikke ikke nummer 2 variabel i return valider(this, 'tal'/'udfyldt'/'email') ???
Avatar billede roenving Novice
18. september 2005 - 17:43 #20
Nej, for det er jo bundet til feltet ...

-- men en simpel metode er at give sine inputs navn, så man kan checke det op imod deres navne, f.eks. mailAdresse, mailKontor, talCPR, talPostNr, navnFornavn, navnEfternavn ...

-- så kunne checket f.eks. se sådan ud:

        if(inp.name.indexOf("mail")==0 && inp.value.match(regmail)){
          alert('Din email er ugyldig.');
          inp.focus();
          return false;
        }

-- hvor man så itererer gennem formens felter !-)

-- og en lille performance-forbedring vil man have, hvis man kun udfører checket, hvis det er nødvendigt, derfor navne-checket først !o]
Avatar billede roenving Novice
18. september 2005 - 17:44 #21
Uff, jeg fik vist spist negeringen før match-tingen: && !inp.value.match(regmail)){
Avatar billede blackscorpion Nybegynder
18. september 2005 - 17:49 #22
okey hvis du lige hurtigt skulle klaske den op til at tjekke mail, tal og udfyldt, hvordan ville det så se ud?

sådan her??

      function valider(inp,t){
     
        var regtal = new RegExp('^[0-9]+$');
        var regmail = new RegExp("^.*@[\\w][\\w\\.-]*\\.[a-z]{2-6}$","i");
       
    if(inp.name.indexOf("mail")==0 && !inp.value.match(regmail)){
      alert('Din email er ugyldig.');
      inp.focus();
      return false;
        }
       
        if(inp.name.indexOf("tal")==0 && !inp.value.match(regmtal)){
          alert('Din email er ugyldig.');
          inp.focus();
          return false;
        }
       
        if(inp.name.indexOf("udfyldt")==0){
          alert('Din email er ugyldig.');
          inp.focus();
          return false;
        }
       
        return true;
      }

og så en

onsubmit="return valider();" ??
Avatar billede blackscorpion Nybegynder
18. september 2005 - 17:49 #23
regtal og ikke regmtal ;)
Avatar billede roenving Novice
18. september 2005 - 17:58 #24
Jeg ville gøre sådan:

<form ... onsubmit="return valider(this);">

function valider(f){
  var regtal = new RegExp('^[0-9]+$');
  var regmail = new RegExp("^.*@[\\w][\\w\\.-]*\\.[a-z]{2-6}$","i");
  var inp;
  for(i=0;f.elements.length>i;i++){
    inp = f.elements[i];
    if(inp.type == "text" || inp.type == "textarea"){
      if(inp.name.indexOf("mail")==0 && !inp.value.match(regmail)){
        alert('Din email er ugyldig.');
        inp.focus();
        return false;
      }

      if(inp.name.indexOf("tal")==0 && !inp.value.match(regmtal)){
        alert('Din email er ugyldig.');
        inp.focus();
        return false;
      }

      if(inp.name.indexOf("udfyldt")==0){
        alert('Din email er ugyldig.');
        inp.focus();
        return false;
      }
    }
  }
  return true;
}
Avatar billede roenving Novice
18. september 2005 - 17:58 #25
tjah, regmtal, hrm ...
Avatar billede blackscorpion Nybegynder
18. september 2005 - 18:00 #26
ja netop gik lidt stærkt der, men du ved hvad jeg mener. *G*

lad os nu sige at der er mere end 1 fejl i formularen, stopper den så efter den første?? eller laver den samme nummer som jeg beskrev før, med at den shuffler mellem fejl beskederne og lyser browseren fuldstændigt?
Avatar billede roenving Novice
18. september 2005 - 18:00 #27
-- og jeg glemte jo, at udfyldt-tingen jo også skulle teste for 'noget'

      if(inp.name.indexOf("udfyldt")==0 && inp.value.length>0){
        alert(inp.name + 'skal udfyldes !-)');
        inp.focus();
        return false;
      }
Avatar billede roenving Novice
18. september 2005 - 18:02 #28
Nej, den returnerer og fortsætter ikke ...

-- lidt irriterende, hvis der ikke tydeligt er gjort opmærksom på, at mange felter skal udfyldes, men rart nok, når det er ret indlysende, hvilke der skal udfyldes !-)
Avatar billede blackscorpion Nybegynder
18. september 2005 - 18:04 #29
nemlig.

en anden sjov ting... nu virker scriptet ikke.

<script type="text/javascript">
function valider(f){
  var regtal = new RegExp('^[0-9]+$');
  var regmail = new RegExp("^.*@[\\w][\\w\\.-]*\\.[a-z]{2-6}$","i");
  var inp;
  for(i=0;f.elements.length>i;i++){
    inp = f.elements[i];
    if(inp.type == "text" || inp.type == "textarea"){
      if(inp.name.indexOf("mail")==0 && !inp.value.match(regmail)){
        alert('Din email er ugyldig.');
        inp.focus();
        return false;
      }

      if(inp.name.indexOf("tal")==0 && !inp.value.match(regmtal)){
        alert('Din email er ugyldig.');
        inp.focus();
        return false;
      }

      if(inp.name.indexOf("udfyldt")==0){
        alert('Din email er ugyldig.');
        inp.focus();
        return false;
      }
    }
  }
  return true;
}
</script>

står lige over den tabel hvor formularen er, har prøvet at rykke den under, virker heller ikke.

Det virkede før med onblur på hver fejl, da den stod lige over formularen...

ved du hvorfor den driller på den måde?
Avatar billede blackscorpion Nybegynder
18. september 2005 - 18:06 #30
har smidt din " && inp.value.length>0" ind. :D
Avatar billede roenving Novice
18. september 2005 - 18:09 #31
Bemærk:

<form ... onsubmit="return valider(this);">
Avatar billede blackscorpion Nybegynder
18. september 2005 - 18:09 #32
hvis jeg smider scriptet op i headeren, virker den heller ikke.. har prøvet at tilføje java script: og java script: i min onsubmit="" dims.. har også prøvet onSubmit. heller intet... :(
Avatar billede blackscorpion Nybegynder
18. september 2005 - 18:09 #33
ja... <form action="cv_next_part.php" method="post" onsubmit="return valider(this);">

nada...
Avatar billede roenving Novice
18. september 2005 - 18:14 #34
Uff ...

&& inp.value.length == 0

-- men har du så navngivet dine inputs efter skemaet ?-)

-- ellers kan jeg ikke forstå det ...

-- prøv at linke til et eksempel !-)
Avatar billede blackscorpion Nybegynder
18. september 2005 - 18:14 #35
hele scriptet ser sådan her ud:

<?php
$siteID = 4;
include("includes/header.inc.php");
?>

<br>

<table cellpadding="0" cellspacing="0" border="0" align="center" class="reg_title">
<tr>
  <td align="right">
  CV tilmelding til Scan-Vikar Trin 1 / 4<br>
  </td>
</tr>
</table>

<br style="font-size: 5px">

<table border="0" cellspacing="0" cellpadding="0" align="center">
<form action="cv_next_part.php" method="post" onsubmit="return valider(this);">
<input type="hidden" name="regID" value="<?php echo md5("page1");?>">
<tr>
  <td width="100" >
  CPR Nummer : <font color="red">*</font></font></td>
  <td >
  <input class="input" type="text"maxlength="6" name="talCpr_part1" style="width: 100px; height: 14px; padding-left: 3px"> - <input class="input" type="text" maxlength="4" name="talCpr_part2" style="width: 84px; height: 14px; padding-left: 3px"> 
  </td>
</tr>
<tr>
  <td >
  Fornavn : <font color="red">*</font>
  </td>
  <td >
  <input class="input" type="text"maxlength="40"name="udfyldtFornavn" style="width: 200px; height: 14px; padding-left: 3px">
  </td>
</tr>
<tr>
  <td >
  Efternavn : <font color="red">*</font>
  </td>
  <td >
  <input class="input" type="text" maxlength="40" name="udfyldtEfternavn" style="width: 200px; height: 14px; padding-left: 3px">
  </td>
</tr>
<tr>
  <td >
  Adresse : <font color="red">*</font>
  </td>
  <td >
  <input class="input" type="text" maxlength="40" name="udfyldtAdresse" style="width: 200px; height: 14px; padding-left: 3px">
  </td>
</tr>
<tr>
  <td >
  Postnr. &amp; By : <font color="red">*</font>
  </td>
  <td >
  <input class="input" type="text" name="udfyldtPostnr" maxlength="4" style="width: 54px; height: 14px; padding-left: 3px"> &nbsp; <input class="input" type="text" name="udfyldtCity" style="width: 131px; height: 14px; padding-left: 3px">
  </td>
</tr>
<tr>
  <td >
  Tlf / Mobil: <font color="red">*</font>
  </td>
  <td >
  <input class="input" type="text" maxlength="8" name="talTlf" style="width: 89px; height: 14px; padding-left: 3px"> & <input class="input" type="text" maxlength="8" name="talMobil" style="width: 90px; height: 14px; padding-left: 3px">
  </td>
</tr>
<tr>
  <td >
  &nbsp;<br><br style="font-size: 7px">
  </td>
  <td  align="right">
  <input class="input" type="submit" value="Næste" class="submit" style="width: 100px">
  </td>
</tr>
</form>
</table>

<script type="text/javascript">
function valider(f){
  var regtal = new RegExp('^[0-9]+$');
  var regmail = new RegExp("^.*@[\\w][\\w\\.-]*\\.[a-z]{2-6}$","i");
  var inp;
  for(i=0;f.elements.length>i;i++){
    inp = f.elements[i];
    if(inp.type == "text" || inp.type == "textarea"){
      if(inp.name.indexOf("mail")==0 && !inp.value.match(regmail)){
        alert('Din email er ugyldig.');
        inp.focus();
        return false;
      }

      if(inp.name.indexOf("tal")==0 && !inp.value.match(regmtal)){
        alert('Din email er ugyldig.');
        inp.focus();
        return false;
      }

      if(inp.name.indexOf("udfyldt")==0 && inp.value.length>0){
        alert(inp.name + 'skal udfyldes !-)');
        inp.focus();
        return false;
      }
    }
  }
  return true;
}
</script>

<?php include("includes/footer.inc.php"); ?>
Avatar billede blackscorpion Nybegynder
18. september 2005 - 18:16 #36
okey never mind... ændrede >0 til ==0 og regmtal til regtal, og nu funker det...

*suk*

nå men smid et svar. *G*
Avatar billede blackscorpion Nybegynder
18. september 2005 - 18:19 #37
okey nu spytter den sådan noget som udfyldCity, udfyldAdresse, talCpr_part1 ud også..

kan man ikke navngive dem alt efter hvad der står?

altså talCpr_part1 til Cpr-Nr Del 1 ?
og udfyldCity til By osv?
Avatar billede blackscorpion Nybegynder
18. september 2005 - 18:20 #38
altså mener i scriptet , så det ser pænt ud på brugerdelen?
Avatar billede blackscorpion Nybegynder
18. september 2005 - 18:22 #39
tænkte lidt på noget ala

if(inp.name==talCpr_part1) { inp..value.replace('talCpr_part1','Cpr-Nr Del 1') }

??
Avatar billede olebole Juniormester
18. september 2005 - 18:22 #40
roenving >> Denne her burde vel tage de fleste 'bogstavs-tegn':
    STRENG.match(/[a-z\300-\377]+/gi);
Avatar billede blackscorpion Nybegynder
18. september 2005 - 18:25 #41
if(inp.name=="talCpr_part1") { inp.name=inp.name.replace('talCpr_part1','Første del af dit Cpr nummer') } :D :D :D :D :D :D
Avatar billede blackscorpion Nybegynder
18. september 2005 - 18:28 #42
olebole -> jamen hvis nu åse alleræs strømbæk fra københavn kom ind, så ville den da fejle?
Avatar billede olebole Juniormester
18. september 2005 - 18:32 #43
Derfor skrev jeg netop 'bogstavs-tegn' ... der er mellemrum ikke indregnet. Det var ikke direkte møntet på dit problem, men på roenvings lange streng af special-tegn  :)

Naturligvis skal der også inkluderes mellemrum, underscore, m.m - men det har roenving selv styr på. Jeg er bare ikke sikker på, han var klar over, at langt de fleste tegn med accenter ligger i spannet mellem oktalværdierne \300-\377  ;o)
Avatar billede roenving Novice
18. september 2005 - 18:32 #44
>>ole

-- det har du sikkert ret i, men min erfaring med tegntabeller er ikke sådan, at jeg 'bare' vil stole på en sådan ting !-)

-- og blackscorpion, du må absolut ikke erstatte inp.name med noget, men du kan da oprette en variabel, som giver det, du ønsker:

var inpTxt = new Array();
inpTxt['udfyldCity'] = 'By';
inpTxt['udfyldAdresse'] = 'Adresse';
inpTxt['talCpr_part1'] = 'Cpr-Nr Del 1';

osv. ...

-- og så lave det sådan:

        alert(inpTxt[inp.name] + 'skal udfyldes !-)');
Avatar billede blackscorpion Nybegynder
18. september 2005 - 18:32 #45
nå ja en anden ting...

Tlf / Mobil:

Der er det kun 1 af dem der skal udfyldes... kan man tage højde for det??

f.eks.

if(inp.name.indexOf("Telefon").value.length!=0) {
alert('Telefon nummeret skal udfyldes');
bla bla bla
}

osv?
Avatar billede blackscorpion Nybegynder
18. september 2005 - 18:34 #46
roenving -> okey måske lidt dumt spørgsmål.. men hvorfor må jeg ikke det?? Det virker da på min?
Avatar billede olebole Juniormester
18. september 2005 - 18:34 #47
Jes >> Det kan du roligt stole på, sålænge tegnsættet er 'iso-8859-1'  ;o)
Avatar billede blackscorpion Nybegynder
18. september 2005 - 18:35 #48
olebole -> ahh okey, men ikke lige mellemrumne jeg mente, men mere de danske æøå. *G* :D
Avatar billede olebole Juniormester
18. september 2005 - 18:36 #49
blackscorpion >> Ja, de tegn er netop dækket med den, jeg viste  ;o)
Avatar billede blackscorpion Nybegynder
18. september 2005 - 18:36 #50
roenving -> okey.. lige meget med mit spørgsmål, har fundet ud af hvad du mener... hvis jeg ændrer inp.name så tjekker den det ikke ordenligt. :(
Avatar billede blackscorpion Nybegynder
18. september 2005 - 18:37 #51
olebole -> oh... tror bare jeg blander mig uden om jeres snak, for så meget ved jeg heller ikke om javascript.. men.. det er MIT spørgsmål. *Griner* :D
Avatar billede olebole Juniormester
18. september 2005 - 18:39 #52
Det er det nemlig ... og derfor viste jeg lige roenving en ting, jeg synes kunne gøre hans RegExp lidt mere 'sexy' - hvis han fandt det fedt  ;o)

- og jeg ved godt, det var en joke  ;o)
Avatar billede blackscorpion Nybegynder
18. september 2005 - 18:44 #53
olebole -> hehe godt så. :D

Men snak i bare løs, for jeg lærer alt det min hjerne nu har kapacitet til at opfatte og forstå, og have plads til.

og tro mig.. det er ikke meget. :P
Avatar billede blackscorpion Nybegynder
18. september 2005 - 18:53 #54
<script type="text/javascript">
function valider(f){
  var regtal = new RegExp('^[0-9]+$');
  var regmail = new RegExp("^.*@[\\w][\\w\\.-]*\\.[a-z]{2-6}$","i");
  var inp;
 
  var inpTxt = new Array();
  inpTxt['udfyldCity'] = 'Du skal angive en By.';
  inpTxt['udfyldAdresse'] = 'Din Adresse skal udfyldes.';
  inpTxt['talCpr_part1'] = 'Første del af dit Cpr Nummer skal udfyldes og må ikke indeholde bogstaver.';
  inpTxt['talCpr_part2'] = 'Anden del af dit Cpr Nummer skal udfyldes, og må ikke indeholde bogstaver.';

 
  for(i=0;f.elements.length>i;i++){
    inp = f.elements[i];
    if(inp.type == "text" || inp.type == "textarea"){
      if(inp.name.indexOf("mail")==0 && !inp.value.match(regmail)){
        alert('Din Email er ugyldig.');
        inp.focus();
        return false;
      }

      if(inp.name.indexOf("tal")==0 && !inp.value.match(regtal)){
        alert(inpTxt[inp.name]);
        inp.focus();
        return false;
      }

      if(inp.name.indexOf("udfyldt")==0 && inp.value.length==0){
        alert(inpTxt[inp.name]);
        inp.focus();
        return false;
      }
    }
  }
  return true;
}
</script>

sådan ser det hele ud nu, og selvfølgelig, så bliver scriptet udbygget til de andre felter osv.

Roenving, smid et svar, eller jeg beholder mine point. :oP
Avatar billede blackscorpion Nybegynder
18. september 2005 - 19:01 #55
Roenving -> men kan lave en "hvis telefon nummer er udfyldt behøver mobil ikke være" og omvendt ? altså mobil -> telefon ?
Avatar billede roenving Novice
18. september 2005 - 19:05 #56
Hrm, den er svær med den konstruktion ...
Avatar billede blackscorpion Nybegynder
18. september 2005 - 19:14 #57
roenving -> jamen kan man ikke lave en

if(inp.name.indexOf[talTlf].value.length>=1 && inp.name.indexOf[talMobil].value.length>=1) {
ignore? *LOL*

løb lige død i den. *G*
Avatar billede blackscorpion Nybegynder
18. september 2005 - 19:18 #58
lagde mærke til før, at hvis jeg ændrer inp.name så tjekker den ikke... kan man ikke...

if(inp.name.indexOf("talTlf").value.length>=1) {
inp.name.indexOf("talMobil")=inp.name.indexOf("talMobil").replace('tal,'')
}

??
Avatar billede blackscorpion Nybegynder
18. september 2005 - 19:23 #59
hvis telefon er udfyldt skal den trimme talMobil ned til Mobil, for så tjekker den det ikke, og omvendt?
Avatar billede blackscorpion Nybegynder
18. september 2005 - 20:00 #60
får spat af det her... :(
Avatar billede olebole Juniormester
18. september 2005 - 20:02 #61
roenving >> http://www.eksperten.dk/spm/649077  :)

- håber skorpionen og hans spat så ikke sender halen mod mig og mit spam  ;D
Avatar billede blackscorpion Nybegynder
18. september 2005 - 20:06 #62
olebole -> nej rolig nu.. det er bare mega frustrerne...

for er ude i noget:

      if(inp.name.indexOf("Telefon")==0 && inp.value.length==0 && inp.name.indexOf("Mobil")==0 && inp.value.length==0) {
        alert('Telefon er ikke udfyldt, men Mobil er.');
        return false;
      }

snask.. sådan at kun hvis begge dele er tomme, så skal den melde fejl... men det virker ikke... :(

og aner ikke mine levende råd, er ikke så god til javascript, for har aldrig rigtigt haft brugt for det. :(
Avatar billede blackscorpion Nybegynder
18. september 2005 - 20:10 #63
hvis jeg ændrer det til

if((inp.name.indexOf("Telefon")==0 && inp.value.length==0) && (inp.name.indexOf("Mobil")==0 && inp.value.length==0)) {

sker der heller ikke noget, den går lige igennem.

men hvis jeg skriver:

if((inp.name.indexOf("Telefon")==0 && inp.value.length==0) || (inp.name.indexOf("Mobil")==0 && inp.value.length==0)) {

så kræver den at begge dele er udfyldt. :(
Avatar billede blackscorpion Nybegynder
18. september 2005 - 20:12 #64
er det fordi at den kun tjekker en ting af gangen??
Avatar billede blackscorpion Nybegynder
18. september 2005 - 20:18 #65
okey er der ikke lige en eller anden der gider nakkeskyde mig???
Avatar billede blackscorpion Nybegynder
18. september 2005 - 20:20 #66
sæt et id på henholdsvis telefon og mobil feltet.

  var telefon = document.getElementById('telefon');
  var mobil = document.getElementById('mobil');

og så

      if(telefon.value==0 && mobil.value==0) {
        alert('Du skal udfylde enten Telefon eller Mobil nummer.');
        return false;
      }

så virker det.. hvis jeg undlader telefon, og udfylder mobil, går den igennem.. hvis jeg udfylder telefon men undlaver mobil går den også igennem, udfylder jeg ingen af dem, får jeg fejlbeskeden, som planlagt.
Avatar billede blackscorpion Nybegynder
18. september 2005 - 20:50 #67
Sådan her ser det færdige validerings script ud.

<script type="text/javascript">
function valider(f){
  var regtal = new RegExp('^[0-9]+$');
  var regmail = new RegExp("^.*@[\\w][\\w\\.-]*\\.[a-z]{2-6}$","i");
  var inp;
  var telefon = document.getElementById('telefon');
  var mobil = document.getElementById('mobil');
 
  var inpTxt = new Array();
  inpTxt['talCpr_part1'] = 'Første del af dit Cpr Nummer skal udfyldes og må ikke indeholde bogstaver.';
  inpTxt['talCpr_part2'] = 'Anden del af dit Cpr Nummer skal udfyldes, og må ikke indeholde bogstaver.';
  inpTxt['udfyldtFornavn'] = 'Du skal angive dit Fornavn og evt. Mellemnavn.';
  inpTxt['udfyldtEfternavn'] = 'Du skal angive dit Efternavn.';
  inpTxt['udfyldtAdresse'] = 'Din Adresse skal udfyldes.';
  inpTxt['talPostnr'] = 'Du skal angive et Postnummer.';
  inpTxt['udfyldtCity'] = 'Du skal angive en By.';

 
  for(i=0;f.elements.length>i;i++){
    inp = f.elements[i];
    if(inp.type == "text" || inp.type == "textarea"){

      if(inp.name.indexOf("mail")==0 && !inp.value.match(regmail)){
        alert('Din Email er ugyldig.');
        inp.focus();
        return false;
      }

      if(inp.name.indexOf("tal")==0 && !inp.value.match(regtal)){
        alert(inpTxt[inp.name]);
        inp.focus();
        return false;
      }

      if(inp.name.indexOf("udfyldt")==0 && inp.value.length==0){
        alert(inpTxt[inp.name]);
        inp.focus();
        return false;
      }
     
      if(telefon.value==0 && mobil.value==0) {
        alert('Du skal udfylde enten Telefon eller Mobil nummer.');
        return false;
      }
      else {
      if(telefon.value!=0 && !telefon.value.match(regtal)) {
        alert('Dit Telefon nummer må kun bestå af tal.');
        return false;
      }
      else if(mobil.value!=0 && !mobil.value.match(regtal)) {
        alert('Dit Mobil nummer må kun bestå af tal.');
        return false;
      }
      else if(telefon.value!=0 && telefon.value.length<8) {
        alert('Du har ikke udfyldt Telefon nummeret korrekt.\nEt Telefon nummer består af 8 tal.');
        return false;
      }
      else if(mobil.value!=0 && mobil.value.length<8) {
        alert('Du har ikke udfyldt dit Mobil nummer korrekt.\nEt Mobil nummer består af 8 tal.');
        return false;
      }
      }
    }
  }
  return true;
}
</script>

felterne har så fået tilføjet enten "tal", "email", "udfyldt" eller sat et ID (mobil og telefon nummer)

roenving... svar tak. :D
Avatar billede blackscorpion Nybegynder
18. september 2005 - 21:13 #68
roenving.. din "var regmail = new RegExp("^.*@[\\w][\\w\\.-]*\\.[a-z][2-6]$","i");" fejler... uanset hvad jeg gør, så får jeg fejl på den. :(
Avatar billede roenving Novice
19. september 2005 - 14:32 #69
Gaab, en tavetosse, som jeg før har lavet, der skal et komma i antallet af tegn i tld'en ...

  var regmail = new RegExp("^.*@\\w[\\w\\.-]*\\.[a-z]{2,6}$","i");
Avatar billede roenving Novice
19. september 2005 - 14:32 #70
-- og velbekomme '-)
Avatar billede blackscorpion Nybegynder
19. september 2005 - 15:37 #71
sjovt.. for har haft fat i andre regexp fra nettet hvor der står , imellem 2 og 6 eller 2 og 4, eller hvad de nu har skrevet, og det virkede heller ikke, men tester lige
Avatar billede blackscorpion Nybegynder
19. september 2005 - 15:38 #72
utroligt...
Avatar billede roenving Novice
19. september 2005 - 17:09 #73
-- og tak for point ;~}
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