09. august 2006 - 10:57Der er
7 kommentarer og 2 løsninger
Hidden textarea
Hej eksperter. Jeg har to input felter (text) samt 2 textareas som hører til de to inputfelter. Jeg er dog træt af at se på de to tekstarea, da de sjællent bruges.
Derfor ønsker jeg en funktion, som "kalder" textareat frem når man stiller sig i i det tilhørende inputfelt.
De to hører sammen på følgende måde:
input1 area1
input2 area2
Og jeg spøger altså til et show/hide script, når jeg stiller mig i input1 skal area1 vises osv.
Håber der er nogen der kan give noget input, javascript er ikke min stærke side.
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Okay, det var smart. Lad os nu sige jeg har 25 felter og textareas, og gerne vil have fjernet alle de andre textfelter når jeg klikker i et nyt felt.
Er jeg så nød til at skrive "document.getElementById('area1').style.display='none'" "document.getElementById('area2').style.display='none'" "document.getElementById('area3').style.display='none'"
osv i hvert inputfelt? Eller kan man lave en funktion der fjerner det textarea der er vist?
-- du kan sagtens lave en funktion, der skjuler alle andre, f.eks. sådan:
<script type="text/javascript"> function showHideAreas(elm){ var num = elm.name.replace(/^înput(\d+)$/i,"$1"), f = elm.form, ars = 1; while(f.elements["area"+ars]) f.elements["area"+ars++].style.display = "none"; f.elements["area"+num].style.display = "inline"; } </script>
Det lyder smart, men virker ikke helt efter hensigten. :) Jeg gør følgende: <script type="text/javascript"> function showHideAreas(elm){ var num = elm.name.replace(/^înput(\d+)$/i,"$1"), f = elm.form, ars = 1; while(f.elements["area"+ars]) f.elements["area"+ars++].style.display = "none"; f.elements["area"+num].style.display = "inline";
Følgende virker: <script type="text/javascript"> function showHideAreas(elm) { var num = elm.name.replace(/^input(\d+)$/i,"$1"), f = elm.form, ars = 1; while (f.elements["area"+ars]) f.elements["area"+ars++].style.display = "none"; f.elements["area"+num].style.display = "inline";
-- og det er jo så præcis en af den slags 'dumme' fejl, nemlig at et form-elemet skal specificeres eksplicit i html-koden, for at javascript kan finde og bruge det ...
-- men da jeg gik ud fra, at du skulle bruge data til noget serverside, brugte jeg ikke kræfter på at understrege dette (jeg tænkte faktisk på lige præcis det problem !-)
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.