29. juli 2004 - 09:52Der 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.
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.
Synes godt om
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.
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
Synes godt om
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.
Synes godt om
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.
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.
Synes godt om
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.
Synes godt om
Ny brugerNybegynder
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.