Avatar billede lsskaarup Nybegynder
04. april 2005 - 13:18 Der er 5 kommentarer og
2 løsninger

onChange: kopier feltværdi1 til feltværdi2 med modsat fortegn

Jeg har en tabel, som jeg får lavet dynamisk. Den bliver bygget op på den måde, at der både er kolonne- og rækkeoverskrifter, og der hvor de "støder" sammen og er ens, er felterne disabled. Jeg skal nu have lavet, så når man f.eks. indtaster en værdi i felt12, så skal der ved onChange, ske en kopiering af værdi til felt21, men bare med modsat fortegn. Derudover skal det også fungere den anden vej, altså fra felt.

Koden er her:

<?php
    //$j = 1;
    for ($j=1; $j<=count($KORROSIONKLASSE); $j++) {
        echo "<tr><th>$KORROSIONKLASSE[$j]</th>";
        for ($i=1; $i<=count($KORROSIONKLASSE); $i++) {
            $disabled = "";
            if ($i==$j){
                $disabled = disabled;
            }
            echo "<td><input $disabled onChange=\"ds.tillaegOverflade$i$j.value=ds.tillaegOverflade$j$i.value\" class=\"small\" type=\"text\" name=\"tillaegOverflade$j$i\" value=\"".$TILLAEGOVERFLADE[$j][$i]."\"</td>\n";
        }
        echo "</tr>";
    }
?>

Jeg havde først givet feltet navn efter arrayvariablen, men det kunne jeg ikke få til at virke. Det gør det ovenstående, dog kun den ene vej, og uden fortegn. Hvordan får jeg det løst?
Avatar billede barklund Nybegynder
04. april 2005 - 13:48 #1
Jeg ville nok kalde dem felt_1_2 og felt_2_1 - så kan du også have felt_10_20 og så videre. Fortegnet skifter ved at smide et unært minus foran værdien. Derudover bør du nok finde det andet element via id:

<?php
    //$j = 1;
    for ($j=1; $j<=count($KORROSIONKLASSE); $j++) {
        echo "<tr><th>$KORROSIONKLASSE[$j]</th>";
        for ($i=1; $i<=count($KORROSIONKLASSE); $i++) {
            $disabled = "";
            if ($i==$j){
                $disabled = disabled;
            }
            echo "<td><input $disabled onChange=\"document.getElementById('tillaegOverflade_".$i."_".$j."').value = -this.value;\" class=\"small\" type=\"text\" id=\"tillaegOverflade_".$j."_".$i."\" value=\"".$TILLAEGOVERFLADE[$j][$i]."\"</td>\n";
        }
        echo "</tr>";
    }
?>

Tror jeg vil virke :)

--
Morten Barklund
Avatar billede lsskaarup Nybegynder
04. april 2005 - 13:58 #2
Jaaa, nu sidder jeg så lidt i en lille pine, men du skal selvfølgelig ikke snydes for dine point. Pinen kommer af, at brugerne nu har fundet ud af, at det skal bygges op på en helt anden måde, så dette matrixskema ikke er nødvendigt. Typisk ... heldigvis var jeg ikke komemt så langt endnu, men du kan nok godt forstå, at jeg ikke gider at teste din løsning.

Dog er jeg lidt skeptisk over for -this.value; Virker det, for er det ikke det sammen som '-ds.feltnavn.value'? Får det har jeg prøvet, og det fik jeg en fejlmeddelelse på.
Avatar billede barklund Nybegynder
04. april 2005 - 14:03 #3
Ja, det burde virke - men måske man skal tvinge den til et tal først: -Number(this.value) - det bør virke :)

Men du beholder bare nogle af pointene hvis du synes.

--
Morten Barklund
Avatar billede lsskaarup Nybegynder
04. april 2005 - 14:17 #4
Nej, ved du hvad, du får sgu pointene. Jeg skal bare lige have det sidste del løst, det kan være jeg kan bruge det i fremtiden, jo...

Det skulle gerne virke begge vejen. Altså jeg skriver i felt_1_2 og felt_2_1 bliver opdateret med det modsatte fortegn, men virker det også hvis jeg skriver noget i felt_2_1, bliver felt_1_2 så opdateret?
Avatar billede barklund Nybegynder
04. april 2005 - 14:21 #5
Ja, det burde ske - dit script ser ud til at gøre præcis dette.

Dog er der også en lille fejl i:

$disabled = disabled;

Der burde stå:

$disabled = "disabled=\"disabled\"";

Hvis det skal være helt korrekt :)

--
Morten Barklund
Avatar billede lsskaarup Nybegynder
04. april 2005 - 14:32 #6
Okay, men disabled fungere ellers godt nok, men fint og jeg takker selvom jeg pt. ikke kan bruge det til så meget, men det kan jo være der er andre herinde, som pludselig skal bruge noget lignede.
Avatar billede barklund Nybegynder
04. april 2005 - 14:42 #7
Tark for points :)
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