Avatar billede clausn Nybegynder
14. april 2004 - 13:25 Der er 5 kommentarer og
1 løsning

Valeridering af felt.

Hejsa,

Jeg er ved at lave mig en indkøbskurv, og har med denne siddet og rodet en del. Jeg prøver at lave en funktion der når jeg forlader feltet "vareid" kommer en popup (en alert(); er helt perfekt - den skal derefter behandles af en funktion som jeg allerede har) med det jeg har tastet ind.

Desuden prøver jeg at ligesom tab at kunne bruge enter tasten til at hoppe frem til næste felt. Jeg ved bare ikke lige hvordan - der er jo ingen af felterne der har noget reelt unikt navn.

<table>
<tr>
<td width="14%"><input type='text' name='vareid' tabindex='1'></td>
<td width="14%">&nbsp;</td>
<td width="14%">&nbsp;</td>
<td width="14%">&nbsp;</td>
<td width="14%">&nbsp;</td>
<td width="15%">&nbsp;</td>
<td width="15%"><input type='text' name='antal' tabindex='2'></td>
</tr>
<tr>
<td width="14%"><input type='text' name='vareid' tabindex='3'></td>
<td width="14%">&nbsp;</td>
<td width="14%">&nbsp;</td>
<td width="14%">&nbsp;</td>
<td width="14%">&nbsp;</td>
<td width="15%">&nbsp;</td>
<td width="15%"><input type='text' name='antal' tabindex='4'></td>
</tr>
</table>

Samtidig var der herinde en person der var så flink at hjælpe med nedenstående:
function addbasket(f){
  var elms = f.elements,ok=false,reg=/^\d+$/;
  for(i=0;elms.length>i;i++){
    if(elms[i].type=='text' && elms[i].name.match(reg)){
      if(elms[i].value.length>0&&!elms[i].value.match(reg)){
        alert('De kan kun skrive tal i feltet antal.');
        elms[i].select();
        elms[i].focus();
        return false;
      }else if(+elms[i].value>50){
        if(!confirm('Er De sikker på at De vil bestille '+elms[i].value+' stk. af varenummer '+elms[i].name +'?')){
          elms[i].select();
          elms[i].focus();
          return false;
        }else ok = true;
      }else ok = ok||(elms[i].value.length>0);
    }
  }
  return ok;
}

Denne ville jeg gerne have med ind i, da man ikke skal kunne taste bogstaver i "antal" feltet.

MVH og PFT
Claus
Avatar billede Slettet bruger
15. april 2004 - 12:54 #1
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<script type="text/javascript">
function videre(obj, e) {
  if (document.all && event.keyCode == 13 || e.which == 13) {
    ti = null;
    for (i = 0; obj.form.elements.length; i++) {
      tabind = obj.form.elements[i].getAttribute("tabindex");
      if (ti == null && tabind == obj.getAttribute("tabindex")) {
        ti = tabind + 1;
        i = 0;
        continue;
      }
      else if (ti != null && tabind == ti) {
        obj.form.elements[i].select();
        obj.form.elements[i].focus();
        return;
      }
    }
  }
}
</script>
</head>
<body>
<form>
<input type="text" name="vareid" tabindex="1" onkeydown="videre(this, event);" /><br />
<input type="text" name="vareid" tabindex="3" onkeydown="videre(this, event);" /><br />
<input type="text" name="vareid" tabindex="2" onkeydown="videre(this, event);" /><br />
<input type="text" name="vareid" tabindex="4" onkeydown="videre(this, event);" /><br />
<input type="submit" value="O.k." tabindex="5" />
</form>
</body>
</html>
Avatar billede Slettet bruger
15. april 2004 - 13:03 #2
Det løser i øvrigt kun dit sidste problem; jeg fangede ikke, hvad problemet var i det første.

Men jeg glemte at teste mit script i NS7. For at det skal virke i den browser, skal du tilføje dette lige efter det startende script-tag:

trykket = false;

Og din formular skal se således ud:

<form onsubmit="return trykket;">
<input type="text" name="vareid" tabindex="1" onkeydown="videre(this, event);" /><br />
<input type="text" name="vareid" tabindex="3" onkeydown="videre(this, event);" /><br />
<input type="text" name="vareid" tabindex="2" onkeydown="videre(this, event);" /><br />
<input type="text" name="vareid" tabindex="4" onkeydown="videre(this, event);" /><br />
<input type="submit" value="O.k." tabindex="5" onmousedown="trykket = true;" onkeydown="trykket = true;" />
Avatar billede clausn Nybegynder
19. april 2004 - 08:34 #3
phoenixv: Hvis jeg tester i MSIE 6.0 SP1 submitter den hvis jeg bruger enter...?
Avatar billede clausn Nybegynder
19. april 2004 - 08:40 #4
phoenixv: Mit andet problem er, at når man forlader tabindex 1 (altså det første) felt skal den lave en alert med det man lige har testet ind.

I tabindex="4" skal den kalde den funktion der er aller øverst. I stedet for '+elms[i].value+'

Hele linien:
"if(!confirm('Er De sikker på at De vil bestille '+elms[i].value+' stk. af varenummer '+elms[i].name +'?')){"

skal den bruge feltet tabindex 1
Avatar billede Slettet bruger
20. april 2004 - 17:38 #5
Dette virker med IE6 SP1 WinXP:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<script type="text/javascript">
trykket = false;
tempobj = null;

function videre(obj, e) {
  if (document.all && event.keyCode == 13 || e.which == 13) {
    ti = null;
    for (i = 0; obj.form.elements.length; i++) {
      tabind = obj.form.elements[i].getAttribute("tabindex");
      if (ti == null && tabind == obj.getAttribute("tabindex")) {
        ti = tabind + 1;
        i = 0;
        continue;
      }
      else if (ti != null && tabind == ti) {
        tempobj = obj.form.elements[i];
        setTimeout("tempobj.select(); tempobj.focus();", 50);
        return;
      }
    }
  }
}
</script>
</head>
<body>
<form onsubmit="return trykket;">
<input type="text" name="vareid" tabindex="1" onkeydown="videre(this, event);" /><br />
<input type="text" name="vareid" tabindex="3" onkeydown="videre(this, event);" /><br />
<input type="text" name="vareid" tabindex="2" onkeydown="videre(this, event);" /><br />
<input type="text" name="vareid" tabindex="4" onkeydown="videre(this, event);" /><br />
<input type="submit" value="O.k." tabindex="5" onmousedown="trykket = true;" onkeydown="trykket = true;" />
</form>
</body>
</html>

Jeg har ikke lige tid til dit andet spørgsmål lige nu.
Avatar billede clausn Nybegynder
26. maj 2004 - 22:01 #6
Lukkes - løsningen er lavet helt om.
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

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging