Avatar billede KHHP Juniormester
01. maj 2012 - 08:54 Der er 12 kommentarer og
1 løsning

Bruge javascript inde i PHP

Hej
Jeg er igang med at lave eksamensprojet i IT A og har i den forbindelse brugt HTML5 placeholder i diverse tekstfelter.
Jeg er dog nået så langt at jeg gerne vil bruge placeholder i et textarea der bruges til at skrive kommentarer. Jeg har brugt et javascript som placeholder-fallback for at sikre at det også virkede i ældre browsere der ikke understøttede HTML5.
Her er min menu, hvor jeg allerede har brugt placeholder og fallback til login: http://pastebin.com/JLKQhtCD
Den side hvor jeg skal bruge lidt hjælp er her: http://pastebin.com/Bw9zrSFv
Min form ligger i linje 68-73.
Vi er enige om at placeholder skulle skrive "Din kommentar her..." i mit tekstfelt, og det gør den også, men i browsere som IE, der ikke understøtter HTML5, endnu, skulle den bruge mit fallback til at løse problemet. Jeg har jo lagt den i min menu, som er på det første link og så vidt jeg har forstået php include, så viser den jo bare koden fra en anden fil, på min side, og dvs. at jeg ikke behøver at placere scriptet dobbelt, bare jeg sætter indstillingerne rigtigt i et nyt <script></script>, hvilket jeg også har gjort.
Men hvorfor virker det så ikke?
Avatar billede Panen Nybegynder
01. maj 2012 - 10:52 #1
Ved et hurtigt kig på din kode lod jeg mærke til at du bruger
document.getElementById('tekst') i din javascript aller øverst.

Men dit textarea har ingen ID attribut. Prøv at tilføje id="tekst" på dit textarea. Lige nu har du bare name="tekst".

Ved ikke om det løser dit problem? :)
Avatar billede KHHP Juniormester
01. maj 2012 - 11:17 #2
Har jeg gjort. Det virker stadig ikke :(
Avatar billede Panen Nybegynder
01. maj 2012 - 11:21 #3
Bruger du en browser med Javascript Debugging? Som for eksempel chromes udviklerværktøj.

Der kan du se hvis den fejler på noget af dit javscript, og hvor den fejler.
Avatar billede KHHP Juniormester
01. maj 2012 - 12:35 #4
Så vidt jeg ved har jeg ikke slået den funktion til, men vil det overhovedet hjælpe at slå det til i Chrome, når den understøtter placeholder?
Anyway, Jeg har fundet det script jeg bruger som fallback her: https://github.com/NV/placeholder.js
Avatar billede Panen Nybegynder
01. maj 2012 - 12:51 #5
Hvis du bruger Chrome, kan du trykke Ctrl+Shift+I og dermed få vist Udviklerværktøjet.

Hvis den side du er på generer fejl i javascript kommer der et rødt kryds nede i højre hjørne af udviklervinduet, som man kan trykke på og dermed få vist hvad og hvor det fejler.

Prøv om der bliver genereret en fejl?
Avatar billede KHHP Juniormester
01. maj 2012 - 15:00 #6
Chrome udviklerværktøj giver ingen fejl, men selve scriptet ligger på i en ekstern fil, mens det eneste jeg skal skrive er hvilket felt den skal bruge det på. Kigger man i det link jeg smed i #4 så bruger de et textarea til eksemplet, for at vise hvordan det virker: http://nv.github.com/placeholder.js/tests/textarea.html
Her hedder deres textarea id="textarea" mens mit hedder id="tekst" og så længe jeg har rettet det, så burde det virke.
Avatar billede Panen Nybegynder
01. maj 2012 - 15:37 #7
Jeg kan se at du i din kode bruger <?php include 'inc/menu.php'; ?>.
I den menu.php har du garanteret også et javascript som bruger noget lignende:

window.onload = function(){
  inputPlaceholder( document.getElementById('tekst') )
}.

Da din side includer denne, vil der pludselig være 2x window.onload
functioner på samme side, hvor den ene vil overskrive den anden.
Hvis du includer din menu.php overalt på din hjemmeside kan du gøre dette i den.

window.onload = function(){
  var arr = document.getElementsByTagName("input");
  for (i = 0; i < arr.length; i++) {
    if(arr[i].className == "input-placeholder"){
      inputPlaceholder( arr[i] );
    }
  }
}

Derefter kan du fjerne din javascript på den side du ikke kan få det til at virke, og så derefter tilføje class="input-placeholder" på alle de elementer hvor du vil bruge funktionen.

Jeg har ikke testet dette, men i teorien burde det vidst virke.
Avatar billede KHHP Juniormester
02. maj 2012 - 14:28 #8
Jeg har nu integreret den i min menu.php, og i menuen virker den, men ikke i mit kommentar-felt. Flytter jeg den så til head i min side, så virker den stadig på login, men ikke på mit kommentar-felt. Jeg har på begge husket at sætte clas="input-placeholder", så den del skulle virke.
Avatar billede Panen Nybegynder
02. maj 2012 - 14:54 #9
Hmm det forstår jeg ikke.
Hvis jeg må se den side hvor det ikke virker, kan jeg tage et hurtigt kig i din javascript herfra?
Bare et simpelt link til din side.

Ellers ved jeg desværre ikke lige hvorfor det ikke virker.
Avatar billede KHHP Juniormester
02. maj 2012 - 18:24 #10
Den side hvor det ikke virker er den samme som jeg linkede til øverst opppe: http://pastebin.com/Bw9zrSFv
Javascriptet er hentet udefra, og jeg har linket til det i #6.
Javascriptet bliver stadig lagt ind med min menu.php, som er i opdateret version her: http://pastebin.com/JLKQhtCD
Avatar billede Panen Nybegynder
02. maj 2012 - 21:31 #11
Ja det er jeg klar over, jeg har både kigget din egen kode og selve placeholder plugin'et igennem.

Jeg tænker et link til den side hvor du prøver at få det til at virke, så jeg kan debugge på din javascript i min egen browser. Medmindre du selvfølgelig udvikler lokalt.
Avatar billede KHHP Juniormester
03. maj 2012 - 08:52 #12
Siden ligger ikke på noget domæne, da det jo som sagt er et eksamensprojekt, og derfor arbejder jeg med den lokalt.
Avatar billede KHHP Juniormester
18. maj 2012 - 21:18 #13
Droppede den idé, da der ikke var tid til at finde en anden løsning og projektet skulle afleveeres i mandags, så det blev afleveret som det var.
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