Avatar billede aerobee Nybegynder
11. november 2009 - 13:25 Der er 7 kommentarer og
1 løsning

Hent indhold fra formular felt

Hej eksperter
Jeg henter på nuværende tidspunkt en php side ind i min side vha ajax. Altså, mine menu knapper henter indholdet fra en php fil ind i en div boks på siden. Intet nyt der.

Men problemet jeg oplever er følgende:
På siden der bliver hentet ind er der en formular, som jeg poster vha en js funktion. Altså sådan sidens indhold bliver opdateret uden reload. Fx en bekræftelse.
Right.

Min formular felter ser således ud:
<input type='text' id='afsemail' value='Din e-mail adresse:' onfocus=\"if(this.value == 'Din e-mail adresse:') {this.value = '';}\" onblur=\"if (this.value == '') {this.value = 'Din e-mail adresse:';}\" />

Jeg forsøger så at hente indholdet på denne måde:
<input type='button' onclick=\"contactmail(document.getElementById('afsemail').value;)\" value='SEND' />

function contactemail udskriver så indholdet i en alert som en test.

Problemet:
den fanger kun det der er angivet i value atributten i formular feltet, altså, Din e-mail adresse:. Sletter jeg standard teksten fanger den intet. Skriver jeg selv noget i feltet fanger den heller intet.

Dette er første gang jeg støder på at getElementById ikke kan hente indholdet fra min formular.

Det jeg tænker som en mulig løsning er at jeg på en eller anden måde skal have lov til at manipulere med js efter siden er loadet i brugerens browser, men jeg mangler "the know how"
Avatar billede showsource Seniormester
11. november 2009 - 14:13 #1
Nu viser du ikke din funktion, men du får afsluttet forkert i onclick
ikke
onclick=\"contactmail(document.getElementById('afsemail').value;)\"
men
onclick=\"contactmail(document.getElementById('afsemail').value);\"
Avatar billede aerobee Nybegynder
11. november 2009 - 14:20 #2
Det her bliver sikkert et rod.

Men hele formularen + tilhørende js funktion ser sådanne ud.
Ovenstående kode var nedkortet, har ikke den fejl i nedenstående kode.


--------Formular-------
                echo "<form id='".$getit['email']."' name='".$getit['email']."' action='java script:void(0);' method='post'>";
                    echo "<strong>Send en e-mail til mig:</strong><br />";
                    echo "<input type='text' id='afsemail' class='inputinfo' value='Din e-mail adresse:'";
                    echo "onfocus=\"if(this.value == 'Din e-mail adresse:') {this.value = '';}\" ";
                    echo "onblur=\"if (this.value == '') {this.value = 'Din e-mail adresse:';}\" /><br />";
                    echo "<input type='text' id='afsnavn' class='inputinfo' value='Dit navn:'";
                    echo "onfocus=\"if(this.value == 'Dit navn:') {this.value = '';}\" ";
                    echo "onblur=\"if (this.value == '') {this.value = 'Dit navn:';}\" /><br />";
                    echo "<textarea id='afsmsg' class='inputinfo' style='height:80px;'";
                    echo "onfocus=\"if(this.value == 'Din besked:') {this.value = '';}\" ";
                    echo "onblur=\"if (this.value == '') {this.value = 'Din besked:';}\" />";
                    echo "Din besked:";
                    echo "</textarea><br />";
                    echo "<input type='button' ";
                    echo "onclick=\"contactmail('".$getit['email']."','".$getit['navn']."',";
                    echo "document.getElementById('afsemail').value,";
                    echo "document.getElementById('afsnavn').value,";
                    echo "document.getElementById('afsmsg').value,";
                    echo "'templates/tl1/mail.php');\"";
                    echo "name='submit' value='SEND' ";
                    echo "style='background:#6f6f6f; width:84px; height:20px; border:0px solid #6f6f6f;";
                    echo "color:#fff; margin-right:46px; margin-bottom:60px; font-weight:bold; letter-spacing:4px' />";
                    echo "<input type='reset' value='Slet alt' ";
                    echo "style='background:#ebebeb; width:56px; height:20px; border:0px solid #ebebeb;' />";
                echo "</form>";
                echo "<div style='position:absolute; bottom:30px;' id='".$getit['email']."_confirmation'></div>";


-----JS------
function contactmail(email,navn,afsemail,afsnavn,afsbesked,path){
    alert("Email: "+email+"\nNavn: "+navn+"\nAfsemail: "+afsemail+"\nAfsnavn: "+afsnavn+"\nAfsbesked: "+afsbesked);
    var ajax;
    try{ajax = new XMLHttpRequest();}// Firefox, Opera, and the like
    catch (e){
        try
        {ajax= new ActiveXObject("Msxm12.XMLHTTP");}//Internet Exploder?
        catch (e){
            try
            {ajax = new ActiveXObject("Microsoft.XMLHTTP");}
            catch (e){
                document.getElementById("showresult").innerHTML="Fejl";}
            }
        }
       
        ajax.open('POST', path, 'true');
        ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        ajax.setRequestHeader("Content-length", afsbesked.length);
        ajax.setRequestHeader("Connection", "close");
        ajax.send("email=" + email + "&navn=" + navn + "&afsemail=" + afsemail + "&afsnavn=" + afsnavn + "&afsbesked=" + afsbesked);
        ajax.onreadystatechange=function(){
        if(ajax.readyState == 4){
            document.getElementById(email+"_confirmation").innerHTML=ajax.responseText;
        }
    }
}
Avatar billede showsource Seniormester
11. november 2009 - 14:27 #3
Jahh, det virker lidt rodet :O)

Men hvis nu du bruger "vis kilde" i din browser, og så paster indholdet her, vil det være nemmere at se fejlen.
Avatar billede aerobee Nybegynder
11. november 2009 - 17:15 #4
Jep, problemet er jo bare at da indholdet bliver hentet ind vha HTTPRequest ses det jo ikke i kildekoden. Der ses kun den side der blev hentet ind da man skrev www.xxx.dk. Altså index filen, ikke den php fil der bliver hentet senere vha httprequest.

Allright, jeg har så den mulighed der hedder "view generated source" i min toolbar, der kommer js scriptet præcis som vist herover og formularen som vist herover, dog uden echo mv.

Paster jeg hele kildekoden herind bliver det først et rod, plus så skal jeg bruge lang tid på at censurere en #&#€% ud da jeg ikke må offentliggøre dette før websitet er done. Håber på forståelse.
Men lad høre min ven, hvad er det præcis for et script du savner ?

Jss som laver httprequest eller ?
Jeg vil meget gerne have hjælp, og vil også gerne give det feedback jeg kan for at du kan give mig hjælpen.
Avatar billede showsource Seniormester
11. november 2009 - 17:32 #5
Det jeg gerne vil se kildekode for, er hele formularen med div. felter.

Samt den funktion du kalder ved submit.

Jeg har aldrig rodet med ajax, men det du spørger om burde være ret simpelt, + at dit første ex. har en fejl ved brugen af ; tilsidst ved onclick !
Avatar billede aerobee Nybegynder
11. november 2009 - 17:35 #6
Javel - sikke en ommer.
Jeg fandt problemet, og denne må jeg nok tage på min kappe.
Problemet var at jeg loopede formularen (hvilket jeg også skal) men glemte at tage højde for at alle felter så havde det samme id. Derfor tog getElementById jo indholdet fra det første formular felt med det angivede id, som jo selvfølgelig indeholdet standard teksten da det felt jeg skrev i måske var nummer 7 i rækken.. Hmm, ja ja.. Det er straffen for ikke at holde pauser.

Tak for din assistance showsource. Du skal da have lidt points for at du gad at gøre et forsøg :)

Smid et svar
Avatar billede showsource Seniormester
11. november 2009 - 17:45 #7
Nej, tag du bare selv :O)
Avatar billede aerobee Nybegynder
11. november 2009 - 17:53 #8
Jeg takker for du gad at bruge din tid :)
Fortsat god aften til dig.
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