Avatar billede Slettet bruger
29. juni 2010 - 13:10 Der er 5 kommentarer og
2 løsninger

onClick div til textarea

Hej jeg ville lave så når jeg trykker på en div, så indsætter den et textarea inde i div'en som indeholder teksten der før bare stod i diven så man direkte kan ændre det der, men problemet er jeg ved ikke helt hvordan jeg skal lave det.

Nogen der har nogle foreslag, det skal bruges i en form, så hvis i vil må i også meget gerne illustrere hvordan jeg senere skulle finde navnet på textareaet, som jeg kan bruge via php altså: $_POST['textarea_blablabla'], det må meget gerne være sådan så textareaet's name bliver div'ens id.

Håber i forstår og i kan hjælpe.
på forhånd mange tak
- Jonas
Avatar billede mike1963 Nybegynder
29. juni 2010 - 14:18 #1
function onClick (divId) {
  var div = document.getElementById(divID);
  var ztextarea = document.createElement('textarea'); 
  ztextarea.setAttribute('name',div.id);
  ztextarea.setAttribute('cols',5);
  ztextarea.setAttribute('rows',2);
  div.appendChild(ztextarea);
}
Avatar billede Slettet bruger
29. juni 2010 - 15:50 #2
hvorfor virker den her kode ikke:

function edit(id){
        id=id.trim();
        var tekst=document.getElementById(id).value.trim();
        var w=document.getElementById(id).style.width;
        var h=document.getElementById(id).style.height;
           
        document.getElementById(id).value="";
        document.getElementById(id).innerHTML="<form method='post'><textarea name="+id+" style='width:auto; height:auto;'>"+tekst+"</textarea><br><input type='submit' value='Godkend' name='submit' onSubmit='submit_edit("+id+")return false;'>";
    }
   
    function submit_edit(name){
        if(document.getElementsByName(name)!= null){
            return true;
        }else{
            document.getElementById('error').value="";
        }
    }

Det var noget lignende sådan jeg havde forstillet mig det :)
Avatar billede mike1963 Nybegynder
30. juni 2010 - 11:19 #3
Når den skal getElementsByName bliver det til en nodeliste og ikke en entydig node !?

Så du skal lige pille noden ud af kollektionen ...

Men hvorfor ikke montere den som id (innerHTML)ligesom name og så gafle den med getElementById
Avatar billede Slettet bruger
30. juni 2010 - 12:11 #4
function edit(obj_id){
        if(!document.getElementById('editor')){
        var tekst=document.getElementById(obj_id).innerHTML;
        var bredde=document.getElementById(obj_id).offsetWidth-25;
    var hojde=document.getElementById(obj_id).offsetHeight-25;
        document.getElementById(obj_id).innerHTML="<div id='editor'><form method='post'><textarea id='editor_textarea' name="+obj_id+" style='width:"+bredde+"px; height:"+hojde+"px; overflow:auto;'>"+tekst+"</textarea><br><input type='submit' value='Godkend' name='submit' onSubmit='submit_edit("+obj_id+"); return false;'></form></div>";
        }else{
            //var tekst2=document.getElementById('editor').value.trim;
            if(document.getElementById('editor').parentNode.id != obj_id){
        document.getElementById('editor').parentNode.innerHTML='<div name="error"><font color="red" size="1">Muligvis ikke gemt:</font></div>'+document.getElementById("editor_textarea").value;   
        edit(obj_id);
            }
        }
        }


det her virker :)

men hvordan gør jeg så når jeg laver en "edit" så går den ind og fjerner den div der hedder "error" hvis den altså indholder en div der hedder det?
Avatar billede Slettet bruger
30. juni 2010 - 12:32 #5
og jeg ville også gerne tjekke om brugeren klikker væk fra div'en
Avatar billede mike1963 Nybegynder
01. juli 2010 - 09:39 #6
Hmmmm - du bliver ved med at med at "injekte" noder udenom om DOMen ?

Det giver et rodet billede af hvad der foregår, så jeg vil foreslå dig at droppe innerHTML og bruge appendChild førend jeg kommer med mere ;o)
Avatar billede Slettet bruger
06. oktober 2010 - 08:53 #7
Har fået løst det :)
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