Avatar billede mads1987 Nybegynder
09. august 2006 - 10:57 Der 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.
Avatar billede fennec Nybegynder
09. august 2006 - 11:04 #1
<input type="Text" name="input1" value="" onfocus="document.getElementById('area1').style.display='inline'"><br>
<textarea id="area1" name="area1" cols="40" rows="4" style="display:none;"></textarea>

Læg mærke til at textarea har fået et ID, da det skal bruges i getElementById()
Avatar billede mads1987 Nybegynder
09. august 2006 - 12:48 #2
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?
Avatar billede roenving Novice
09. august 2006 - 12:58 #3
-- 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>

-- kaldes med:

<input name="input1" onfocus="showHideAreas(this);">

-- vil skjule alle textareas fra area1 til der ikke er flere og så vise det area, der har samme nummer, som det pågældende inputx !-)
Avatar billede mads1987 Nybegynder
09. august 2006 - 13:24 #4
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";
 
}
</script>

<input name="input1" onfocus="showHideAreas(this);">
<input name="input2" onfocus="showHideAreas(this);">
<textarea id="area1" name="area1" cols="40" rows="4" style="display:none;"></textarea>
<textarea id="area2" name="area2" cols="40" rows="4" style="display:none;"></textarea>

Og får denne en "objekt er obligatorisk" fejl i denne linie  while(f.elements["area"+ars]).

Er det en dumme fejl som jeg bare ikke selv kan se?
Avatar billede mads1987 Nybegynder
09. august 2006 - 15:27 #5
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";
 
}
</script>

<form action="..." method="post">
<input name="input1" onfocus="showHideAreas(this);">
<input name="input2" onfocus="showHideAreas(this);">
<textarea id="area1" name="area1" cols="40" rows="4" style="display: none;"></textarea>
<textarea id="area2" name="area2" cols="40" rows="4" style="display: none;"></textarea>
</form

Svar gerne!
Avatar billede fennec Nybegynder
10. august 2006 - 09:02 #6
Du har ikke specificeret hvem af os der skal have point (eller begge). Men hvis jeg skal have nogle af dem, kan du give dem nu.

.o) <-- One Eyed Jack
Avatar billede roenving Novice
10. august 2006 - 15:46 #7
-- 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 !-)

Velbekomme, jeg er gerne med på en deler '-)
Avatar billede mads1987 Nybegynder
14. august 2006 - 16:18 #8
Jeg siger mange tak for hjælpen.
Avatar billede roenving Novice
15. august 2006 - 12:51 #9
-- og jeg takker for point ;~}
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