Avatar billede spinner Nybegynder
28. juni 2001 - 22:49 Der er 6 kommentarer og
1 løsning

Array

Hejsa,

Jeg har en side med en masse input-felter. Disse ligger i et array (de har alle samme navn).

Til disse felter vil jeg binde nogle funktioner via onBlur, onFocus osv. men mit problem er at få at vide hvilket felt der er blevet trykket på.

Jeg havde forstillet mig noget a la:

funtion test() {
  var idx = document.forms[0].knap.selectedIndex
}

men det ser ikke umiddelbart ud til at virke.

Nogen der har et forslag?

\\\\Spinner
Avatar billede jakoba Nybegynder
28. juni 2001 - 23:02 #1
Jeg ville gerne se din form. Det luder ildevarslende at der skulle være flere felter med samme navn (medmindre det er radioknapper)

i en form er der et medfødt array som alle felter ligger i:
document.forms[0].elements[index].selectedIndex
der finder du ALLE felter inklusive submit og reset knapperne.

mvh JakobA
Avatar billede jakoba Nybegynder
28. juni 2001 - 23:02 #2
ikke luder. lyder
Avatar billede nikolajdu Nybegynder
28. juni 2001 - 23:03 #3
Du kan jo sætte en variabel på det link/felt/box der bliver trykket på

f.eks

<input type=\"text\" name=\"Tekst\" onClick=\"saetVariabel(this.name)\">
<input type=\"text\" name=\"Tekst2\" onClick=\"saetVariabel(this.name)\">

og så en funktion til at hente variablen med.

<head>
<script>

function saetVariabel(hvad){
alert(hvad);
}
</head>

Finito

alert(hvad) returnerer så værdien af NAME, så nu ved du hvilken TEKST, der blev trykket på.

/Nikolaj
Avatar billede jakoba Nybegynder
28. juni 2001 - 23:08 #4
\"men mit problem er at få at vide hvilket felt der er blevet trykket på.\"
den del er nem:

<input type=\'???\' name=\'kyllerylle\' onclick=\"din_funktion( this.name )\">

i funktionen kan du så genfinde det felt med
function din_funktion( param ) {
    alert( \"felt \" +param +\" indeholder \" +document.forms[0].elements[param].value );
}
Avatar billede spinner Nybegynder
28. juni 2001 - 23:33 #5
Min form er opbygget således:
 
dato    bilag    tekst    nummer
dato    bilag    tekst    nummer
dato    bilag    tekst    nummer
...
...

og sådan forsætter det. Det er navnene på felterne der står der og det er tekst eller dropdown-felter.

Problemet er at this.name kun returnerer \"dato\" hvis der klikkes på et dato-felt

Grunden til at jeg skal vide hvilken \"linje\"/index det drejer sig om er at jeg skal ændre i nogle af de andre felter med samme index. F.eks. indtastes noget i dato[3] (som jo kun hedder dato) hvilket kalder en funktion hvor der kunne stå noget lignende:

document.forms[0].tekst[her skal index\'et fra dato-feltet sættes ind].value = \"en tekst\";

Håber jeg har gjort det nogenlunde forståeligt, eller prøver jeg gerne at forklare det bedre...

\\\\Spinner
Avatar billede jakoba Nybegynder
29. juni 2001 - 01:39 #6
kan det passe at felterne står grupperet regelmæssit i grupper med den rækkefølge?
Hvis ja er det såmænd ikke så svært :)

<input type=\"text\" name=\'dato\' value=\"\" onclick=\"din_funktion(this)\">

og funktionen laves så som;

function din_funktion ( datofelt ) {
    var i;
    for ( i=0; i<datofelt.form.elements.length; i++ )
        if ( datofelt == datofelt.form.elements[i] ) break;
    // nu er i index for feltet dato i den ønskede gruppe
    datofelt.form.elements[i+1] // er feltet bilag i samme gruppe
    datofelt.form.elements[i+2] // er feltet tekst i den gruppe
    datofelt.form.elements[i+3] // er feltet nummer i gruppen
};

giver det mening?

mvh JakobA
Avatar billede spinner Nybegynder
29. juni 2001 - 09:42 #7
Yeps, så virker det :o)

Takker!

\\\\Spinner
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