Avatar billede mercutio Nybegynder
29. juli 2004 - 09:52 Der er 10 kommentarer og
1 løsning

At hoppe rundt i en masse felter i en tabel med pil tasterne

Hej eksperter
Er der en måde hvorpå jeg kan lave et javascript der gør at jeg kan hoppe både frem og tilbage samt op og ned i en forms felter der er placeret i en tabel?

Frem og tilbage er vel bare med tab og shift tab men hvad med op og ned? kan det lade sig gøre?
Mvh. Merc.
Avatar billede Slettet bruger
29. juli 2004 - 14:22 #1
Det kræver et link, hvor du viser os din formular.
Avatar billede mercutio Nybegynder
29. juli 2004 - 15:44 #2
Det er egentlig bare en tabel med ti kolonner og ti rækker hvor alle felterne hedder det samme i hver række blot efterfulgt af et rækkenr.
Avatar billede Slettet bruger
29. juli 2004 - 21:06 #3
Så kommer alle felterne i hver række jo til at have samme navn? Det må de ikke have. Men det er godt, at de er systematisk nummererede, for det gør det hele meget nemmere.
Avatar billede mercutio Nybegynder
29. juli 2004 - 23:02 #4
Nej de har ikke samme navn.
f.eks. i linie et er der et belobmm1, belobxm1
i linie to er der belobmm2, belobxm2 osv...
Avatar billede Slettet bruger
30. juli 2004 - 11:26 #5
Dette ser ud til at virke:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<script type="text/javascript">
function opNed(obj) {
  temp = event.keyCode - 39;
  if (Math.abs(temp) != 1)
    return true;
  tal = parseInt(obj.name.replace(/^\D+/, "")) + temp;
  if (tal < 1 || tal > 10)
    return true;
  felt = obj.form.elements[obj.name.replace(/\d+$/, "") + tal];
  felt.focus();
  felt.select();
  return false;
}
</script>
</head>
<body>
<form>
<input type="text" name="belobmm1" onkeydown="return opNed(this);" /><br />
<input type="text" name="belobmm2" onkeydown="return opNed(this);" /><br />
<input type="text" name="belobmm3" onkeydown="return opNed(this);" />
</form>
</body>
</html>

(Du skal selvfølgelig udvide til 10x10 felter for at scriptet giver mening)
Avatar billede mercutio Nybegynder
30. juli 2004 - 23:15 #6
Vil du ikke lige forklare hvad det er du gør i funktionen op ned
function opNed(obj) {
  temp = event.keyCode - 39;
  if (Math.abs(temp) != 1)
    return true;
  tal = parseInt(obj.name.replace(/^\D+/, "")) + temp;
  if (tal < 1 || tal > 10)
    return true;
  felt = obj.form.elements[obj.name.replace(/\d+$/, "") + tal];

Gerne detaljeret for de komplekse linier
Avatar billede Slettet bruger
02. august 2004 - 09:42 #7
Jeg kan prøve:

function opNed(obj) { //Funktionen opNed får tekstfeltobjektet med som argument
  temp = event.keyCode - 39; //Virker kun i IE! Hvis der trykkes på [op] på tastaturet, er event.keyCode lig med 38, hvis der trykkes på [ned], er det 40 (for at forstå det smarte i dette kig videre)
  if (Math.abs(temp) != 1) //Hvis den numeriske værdi af "temp" ikke er 1...
    return true; //... forlades funktionen, og tastaturtrykket behandles som sædvanligt
  tal = parseInt(obj.name.replace(/^\D+/, "")) + temp; //Nummeret i tekstfeltets navn bliver fundet ved at udskifte alle ikke-tal med ingenting. parseInt gør strengen til et tal, som scriptet kan bruge til udregninger. Til sidst lægges "temp" til, som jo enten er 1 eller -1. Hvis der blev trykket på [ned] lægges 1 til, hvis der blev trykket på [op] trækkes 1 fra
  if (tal > 1 && tal < 10) { //Hvis "tal" er mindre end 1 eller større end 10, er der enten blevet trykket på [op] i et tekstfelt i den øverste række eller på [ned] i et af de nederste felter, og så skal scriptet gå ud af funktionen
    felt = obj.form.elements[obj.name.replace(/\d+$/, "") + tal]; //Det felt, der skal have fokus, findes ved at lægge tekstfeltets navn (bortset fra tal-delen, som udskiftes med ingenting) sammen med variablen "tal"
    felt.focus(); //Det nye felt får fokus
    felt.select(); //Indholdet i det nye felt markeres
  }
  return false; //Dette sørger for, at browseren ikke udfører den handling, der normalt ville udføres ved tastetrykket
}

Jeg håber, det var nogenlunde forklaring.
Avatar billede Slettet bruger
02. august 2004 - 09:44 #8
Som du kan se, har jeg forbedret scriptet en anelse (kun mht. enkelheden).

Mine kommentarer ser lidt rodede ud; du kan med fordel læse dem i en HTML-editor.
Avatar billede Slettet bruger
02. august 2004 - 09:45 #9
Det gik lige lidt for hurtigt, der skulle stå:

if (tal >= 1 && tal <= 10) {
Avatar billede mercutio Nybegynder
17. september 2004 - 00:00 #10
Er igang med at lukke spørgsmål som jeg ikke har fået et svar på. Bliver du snyt for point så lav et indlæg så skal jeg nok oprette et nyt så du kan få dine points.
Avatar billede Slettet bruger
17. september 2004 - 10:47 #11
Det er o.k., men næste gang skulle du måske speede processen lidt ned og så i stedet selv vurdere, om der skal gives point i de enkelte spørgsmål.
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