webForumDet fria alternativet

Spökbokstäver i disablat textfält (IE)

JavaScript

19 svar · 945 visningar · startad av aasah

Medlem sedan mars 20034 471 inlägg
Frågan#1

Längst ner på min sida står följande

document.onLoad = initiate();
</script>

</div></body></html>

Funktionen ser ut så här:

function initiate() {
   var knappEl = document.getElementById('wordBoxLetterButton');
   var letterEl = document.getElementById('wordBoxLetter');
   knappEl.disabled = true;
   letterEl.disabled = true;
   letterEl.value = '';
   for (var i = 0; i < 6; i++) {
      var ordEl = document.getElementById('wordBoxWord'+i);
      knappEl = document.getElementById('wordBoxButton'+i);
      knappEl.disabled = true;
      ordEl.disabled = true;
      ordEl.value = '';
   }
}

Dvs när sidan laddar sätts alla fält i min (nedre) tabell till disabled och textfield:en töms. Klickar man sedan på någon vit cell i korsordet kan man skriva i fälten. Laddar man om sidan utan att ha skickat iväg det i formen (med Add Letter/Word) så ska fälten tömmas och allt "disablas" igen. Funkar klockrent i FF. Men i IE däremot ligger "spökbokstäver" kvar!! Vad beror det på? Finns det någon enkel lösning? Webbsidan

Medlem sedan dec. 20025 483 inlägg
#2

Jag skulle skriva

window.onload = initiate;

Med din kod tilldelar du returvärdet av initiate() istället för en referens till den.

Medlem sedan mars 20034 471 inlägg
#3

Peter S skrev:

Jag skulle skriva

window.onload = initiate;

Med din kod tilldelar du returvärdet av initiate() istället för en referens till den.

Tyvärr funkar inte detta. Blir ingen skillnad i IE v 6 i alla fall.

Medlem sedan dec. 20025 483 inlägg
#4

Märklich. Det bör fungera. Är du säker på att du ändrat kodraden document.onLoad = initiate(); till den föreslagna? På sidan du länkade till är ändringen ej gjord.

Medlem sedan mars 20034 471 inlägg
#5

Peter S skrev:

Märklich. Det bör fungera. Är du säker på att du ändrat kodraden document.onLoad = initiate(); till den föreslagna? På sidan du länkade till är ändringen ej gjord.

Det berodde på att det inte blev någon skillnad. Och alltså var det ändrat tillbaka igen. NU är det som du föreslår igen (fortfarande ingen skillnad). I IE 6 i alla fall gäller följande:

  1. Sidan laddar - allt är snyggt.
  2. Tryck i valfri vit ruta. Då öppnas den undre tabellen så man kan skriva i de övre raderna. (Dessutom krymper iframen till höger men det är en annan tråd.)
  3. Skriv något i ett av textfälten i den nedre vänstra tabellen. Men skicka INTE iväg det.
  4. Ladda om sidan. Resultatet (för den vänstra sidan) kan beskådas i bifogad fil. (Och till höger expanderar iframen snyggt igen.)
IEstrulSpok.jpg
Medlem sedan dec. 20025 483 inlägg
#6

Nu när jag tittade stod det document.onLoad - inte window.onload.

Medlem sedan mars 20034 471 inlägg
#7

Nu sätter jag value:t till '' innan jag disablar - samma resultat som ovan:

//Ser till att sidan laddas med idel tomma och "disablade" Word/LetterBoxfält.
function initiate() {
   var knappEl = document.getElementById('wordBoxLetterButton');
   var letterEl = document.getElementById('wordBoxLetter');
   knappEl.disabled = true;
   letterEl.value = '';
   letterEl.disabled = true;
   for (var i = 0; i < 6; i++) {
      var ordEl = document.getElementById('wordBoxWord'+i);
      knappEl = document.getElementById('wordBoxButton'+i);
      knappEl.disabled = true;
      ordEl.value = '';
      ordEl.disabled = true;
   }
}

<!--- andra andan av koden -->
document.onLoad = initiate;
Medlem sedan juni 200032 967 inlägg
#8

Peter S skrev:

Nu när jag tittade stod det document.onLoad - inte window.onload.

- - - - -

Medlem sedan mars 20034 471 inlägg
#9

Peter S skrev:

Nu när jag tittade stod det document.onLoad - inte window.onload.

Oavsett om jag skriver window eller document ser det likadant ut. Nu står det window.

Men när sidan laddar om, laddar väl både window och document om, väl?

Medlem sedan juni 200032 967 inlägg
#10

Blir det någon skillnad om du hoppar över disabled-delen helt?
I så fall skulle du ju kunna styla fältet att se disableat ut, och köra blur() vid onfocus, så beter det sig som ett sådant också (med skillnad att värdet faktiskt skickas med formuläret vid submit.).

Medlem sedan dec. 20025 483 inlägg
#11

aasah skrev:

Oavsett om jag skriver window eller document ser det likadant ut. Nu står det window.

Nej, det gör det inte. ;)

Medlem sedan mars 20034 471 inlägg
#12

Peter S skrev:

Nej, det gör det inte. ;)

Va? Jo, det gör det! Hur 17 kommer du till sidan? Om du använder länken ovan borde du se det. För att vara säker på att jag inte kikade på något ur cachen kollade jag även via Firefox (som inte varit öppet alls sedan jag ändrade till window nu.) Står window där med.

@nders - Jag har hellre fältet disablat med spökbokstäver, som man får börja med att ta bort när disable försvinner, än tvärtom. Innan man tryckt i korsordet finns inga referenser för fälten nämligen. Så om man skickar iväg något då kan det bli riktigt kajko. Så om jag måste välja, så...

Medlem sedan dec. 20025 483 inlägg
#13

Tips: skiftläge.

Medlem sedan juni 200032 967 inlägg
#14

Javascript är väldigt case sensitive, så onLoad != onload.

edit: ^^ :)

Medlem sedan mars 20034 471 inlägg
#15

Det funkar! HÄRLIGT! Tack båda två för ert tålamod!!! :birp

Men... jag fattar inte... Enligt min nya lärobok i JavaScript utgiven hösten 2006 spelar skiftläget ingen roll så länge man håller sig till HTML och inte XML... Uppenbarligen stämmer inte det.

Men varför funkar onClick då??? :q

Medlem sedan juni 200032 967 inlägg
#16

onClick är ett attribut till vissa HTML-taggar, och har egentligen ingenting med javascript att göra, förutom att attributvärdet normalt sett evalueras som javascript.

Medlem sedan mars 20034 471 inlägg
#17

@nders skrev:

onClick är ett attribut till vissa HTML-taggar, och har egentligen ingenting med javascript att göra, förutom att attributvärdet normalt sett evalueras som javascript.

Åh! Då har jag blandat ärtor och morötter. Tacka 17 för att det blev grönsakssoppa!

Vad är skillnaden på window.onload och document.onload? Laddar inte document om när fönstret gör det?

Medlem sedan dec. 20025 483 inlägg
#18

Det finns helt enkelt ingen onload-egenskap hos document.

Medlem sedan mars 20034 471 inlägg
#19

Peter S skrev:

Det finns helt enkelt ingen onload-egenskap hos document.

Åh! Ja då förstår jag... :x

Tack igen för ert tålamod! :birp

Medlem sedan dec. 20025 483 inlägg
#20

:bire

279 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
136 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)