Avatar billede bibliotekarens Nybegynder
18. marts 2006 - 13:46 Der er 26 kommentarer og
2 løsninger

hjælp til spss template ang. textarea osv.

Hej eksperter
Jeg er ved at stramme lidt op på nogle templates der bruges til online evalueringer i spss. jeg har bl.a. indsat nedenstående script:

<!-- Script der bør placere cursoren i textfeltet fra start -->
<script language="javascript">
<!--
document.mrFORM.EDIT.focus();
//-->
</script>

det virker fint nok. problemet er bare at det ikke er alle sider der er et textarea på - og så kommer det der lille gule fejl-ikon på bunden af siden.

kan nogen lave et script der går ind og checker om der er et textarea, og kun hvis der er, skal ovenstående script bruges?

én ting til - kan nogen lave et script der får textarea'et til at skifte farve så snart man begynder at taste - og hvis man sletter alt skal det skifte tilbage til oprindeligt? altså hvis den er tom er den normal og ellers skifter den? det er sådan en slags visuel "motivering" for at skrive noget...

håber der er nogen der kan hjælpe :-)
Avatar billede stiness Nybegynder
18. marts 2006 - 14:29 #1
try {
    document.mrFORM.EDIT.focus();
} catch (error) { }

-Stine:)
Avatar billede stiness Nybegynder
18. marts 2006 - 14:35 #2
<HTML>
<HEAD>
<SCRIPT>
function js_textarea() {
    var area = document.getElementById("AREA");
    if (area.value == "") {
        area.style.backgroundColor = "white";
    } else {
        area.style.backgroundColor = "pink";
    }
}
</SCRIPT>
</HEAD>
<BODY>
<TEXTAREA ID="AREA" ONKEYUP="java script: js_textarea();"></TEXTAREA>
</BODY>
</HTML>
Avatar billede stiness Nybegynder
18. marts 2006 - 14:38 #3
Blir vist pænere af at tilføje følgende til TEXTAREA:

STYLE="background-color: white; border: 1px solid gray;"

-Stine:)
Avatar billede bibliotekarens Nybegynder
18. marts 2006 - 14:42 #4
det ser godt ud - jeg vil lige afprøve det. Øøøh hvor skal jeg indsætte den der try-ting? er det også i headeren?
Avatar billede stiness Nybegynder
18. marts 2006 - 14:43 #5
.. eller ved at erstatte "white" med "" i js_testarea...
Avatar billede stiness Nybegynder
18. marts 2006 - 14:46 #6
Her har du en opdateret skitse;)

<HTML>
<HEAD>
<SCRIPT>
function js_textarea() {
    var area = document.getElementById("AREA");
    if (area.value == "") {
        area.style.backgroundColor = "";
    } else {
        area.style.backgroundColor = "pink";
    }
}

try {
    document.getElementById("AREA").focus();
} catch (error) { }
</SCRIPT>
</HEAD>
<BODY>
<TEXTAREA ID="AREA" ONKEYUP="java script: js_textarea();"></TEXTAREA>
</BODY>
</HTML>
Avatar billede stiness Nybegynder
18. marts 2006 - 14:51 #7
Eller det her er vel egentlig pænere (at putte focusdimsen ind i en fukction og tilføje en ONLOAD til BODY)...

<HTML>
<HEAD>
<SCRIPT>
function js_textarea() {
    var area = document.getElementById("AREA");
    if (area.value == "") {
        area.style.backgroundColor = "";
    } else {
        area.style.backgroundColor = "pink";
    }
}

function js_initialize() {
    try {
        document.getElementById("AREA").focus();
    } catch (error) { }
}
</SCRIPT>
</HEAD>
<BODY ONLOAD="java script: js_initialize();">
<TEXTAREA ID="AREA" ONKEYUP="java script: js_textarea();"></TEXTAREA>
</BODY>
</HTML>
Avatar billede bibliotekarens Nybegynder
18. marts 2006 - 15:03 #8
hej igen - kan man gøre noget af det på en anden måde?
skal sætningen ONKEYUP="java script: js_textarea() stå inde i textarea-tagget?

problemet er at jeg ikke kan definere et textarea - i det her program er der bare et tag der hedder <data> hvor fra ting bliver hentet ind fra en database. i den html-kode der bliver genereret ser tagget således ud: <textarea class="mrEdit" name=EDIT cols=40 rows=1></textarea>. men jeg har altså ikke adgang til at skrive nogetsomhelst i det tag.

har du nogen ideer til hvordan man kan omgå det?
Avatar billede stiness Nybegynder
18. marts 2006 - 15:14 #9
Hmm... put

    document.FORM.EDIT.onkeyup = js_textarea

ind i js_initialize...

Blir nødt til at løbe nu men er på igen i morgen;)
Avatar billede bibliotekarens Nybegynder
18. marts 2006 - 15:19 #10
oki 1000 tak for hjælpen so far :-)
Avatar billede mclemens Nybegynder
18. marts 2006 - 19:26 #11
Hvad med det her:

.html:

<html><head>
<script type="text/javascript" src="inputtest.js"></script>
</head><body>

<form>
<textarea id="txtarea"></textarea>
<textarea id="txtarea2"></textarea>
</form>

</body></html>


.inputtest.js
a=0;txtctrlinit();txtfocusit();

function txtctrl(){
if(document.getElementById("txtarea")){
  if(document.getElementById("txtarea").value!=""){
  document.getElementById("txtarea").style.backgroundColor="rgb(220,220,220)";}
  else document.getElementById("txtarea").style.backgroundColor="white";
}
}

function txtctrlinit(){
txtctrl();setTimeout("txtctrlinit(a);",100);
}

function txtfocusit(){
if(document.getElementById("txtarea")){
  document.getElementById("txtarea").focus();}
else setTimeout("txtfocusit();",100);
}
Avatar billede bibliotekarens Nybegynder
19. marts 2006 - 10:08 #12
det var da en superduper løsning! må jeg lige spørge hvad setTimeout egentlig gør?

jeg har lige et tillægsspørgsmål - jeg skal nok forhøje points...

jeg har heller ikke adgang til at skrive i <tr>-tags osv. jeg ville gerne have at alle rækker opfører sig sådan her:
   
<tr class="borderbottom" onmouseover="this.style.backgroundColor='#797874';" onmouseout="this.style.backgroundColor='#fff';">
    <td>
        <p>test for at se om den skifter farve...</p>
    </td>
</tr>

kender I en funktion (eller kan I lave en funkt.) der kan få alle rækker til at opføre sig sådan ved mouseover?

så ville jeg bare være lykkelig :-)
Avatar billede mclemens Nybegynder
19. marts 2006 - 10:44 #13
setTimeout kør at det nævnte script køres efter x-antal ms. i dette tilfælde hvert 1/10 sekund... derudover er der kontrol på om formualren er der så vi ikke får en trals javascript fejl...

- M.h.t. tr'sene kan du give dem et id der er ens ?
... det vil gøre det meget nemt at løbe igennem dem ...
Avatar billede mclemens Nybegynder
19. marts 2006 - 10:45 #14
setTimeout kør = setTimeout gør ... formualren=formularen ... :P
Avatar billede mclemens Nybegynder
19. marts 2006 - 10:56 #15
- M.h.t. tr'sene kan du give dem et id der er ens ?
> jeg har heller ikke adgang til at skrive i <tr>-tags

- Hvad med tablen hvori tr'sene ligger?
Avatar billede bibliotekarens Nybegynder
19. marts 2006 - 11:46 #16
selve tabellen har et id - rækkerne har ikke - og selv cellerne (<td>) får tildelt et fortløbende nummer CellId0 CellId1 osv. Det er ikke til på forhånd at vide hvor mange celler der er...
Avatar billede bibliotekarens Nybegynder
19. marts 2006 - 11:47 #17
ups nej - selve tabellen har ikke et id - den er pakket ind i en <span> der har en id.
kan det bruges?
Avatar billede bibliotekarens Nybegynder
19. marts 2006 - 11:49 #18
jeg kender ikke rigtig javascript, men kan man sige noget med at
hvis <tr
  skal den erstatte med <tr id="raekke"
?
Avatar billede mclemens Nybegynder
19. marts 2006 - 11:54 #19
hvis <tr
  skal den erstatte med <tr id="raekke"
?

tjoh, den prøver jeg lige ...
Avatar billede mclemens Nybegynder
19. marts 2006 - 12:06 #20
Prøver lige ;)

.html

<html><head>
<script type="text/javascript" src="inputtest.js"></script>
</head><body onload="tableit();">

<form>
<textarea id="txtarea"></textarea>
<textarea id="txtarea2"></textarea>
</form>

<table>
<tr><td>abc</td></tr>
<tr><td>abc</td></tr>
<tr><td>abc</td></tr>
<tr><td>abc</td></tr>
</table>

<table>
<tr><td>abc</td></tr>
<tr><td>abc</td></tr>
<tr><td>abc</td></tr>
<tr><td>abc</td></tr>
</table>

</body></html>



.inputtest.js

a=0;txtctrlinit();txtfocusit();tableit();

function txtctrl(){
if(document.getElementById("txtarea")){
  if(document.getElementById("txtarea").value!=""){
  document.getElementById("txtarea").style.backgroundColor="rgb(220,220,220)";}
  else document.getElementById("txtarea").style.backgroundColor="white";
}
}

function txtctrlinit(){
txtctrl();setTimeout("txtctrlinit(a);",100);
}

function txtfocusit(){
if(document.getElementById("txtarea")){
  document.getElementById("txtarea").focus();}
else setTimeout("txtfocusit();",100);
}


function tableit() {f1="#fff";f2="#797874";
if(document.body.innerHTML){
  document.body.innerHTML=document.body.innerHTML.replace(/<tr/gi, "<tr onMouseOver=\"style.backgroundColor='"+f2+"';\" onMouseOut=\"style.backgroundColor='"+f1+"';\"");}
else setTimeout("tableit();",100);
}
Avatar billede bibliotekarens Nybegynder
19. marts 2006 - 13:08 #21
hurra - det virker. men det lille gule ikon kommer frem nederst, så der er nok en lille fejl. vil du hjælpe med en ting? for det er nemlig sådan at hvis der er en tabel er der ikke et textarea og omvendt, så det er 2 forskellige filer. kan det evt. skilles ad så tabelfunktionen bare er i en?

det skal lige siges at der ikke kan ligge .js filer på serveren, så jeg har skrevet det ind i headeren - det burde der vel ikke være noget i vejen for, vel?

hvor er du dog bare en helt :-)
Avatar billede mclemens Nybegynder
19. marts 2006 - 13:45 #22
hurra - det virker. men det lille gule ikon kommer frem nederst, så der er nok en lille fejl. vil du hjælpe med en ting?>
- Min fejl kigger på det :/

det skal lige siges at der ikke kan ligge .js filer på serveren, så jeg har skrevet det ind i headeren - det burde der vel ikke være noget i vejen for, vel?>
-Ingen problemer... kigger også på det ...
Avatar billede mclemens Nybegynder
19. marts 2006 - 14:16 #23
Virker de har:

<html><head>
<script language="javascript">
a=0;

function txtctrl(){
if(document.getElementById("txtarea")){
  if(document.getElementById("txtarea").value!=""){
  document.getElementById("txtarea").style.backgroundColor="rgb(220,220,220)";}
  else document.getElementById("txtarea").style.backgroundColor="white";
}
}

function txtctrlinit(){
txtctrl();setTimeout("txtctrlinit(a);",100);
}

function txtfocusit(){
if(document.getElementById("txtarea")){
  document.getElementById("txtarea").focus();}
else setTimeout("txtfocusit();",100);
}

</script>
</head>

<body onLoad="txtctrlinit();txtfocusit();">

<form>
<textarea id="txtarea"></textarea>
<textarea id="txtare2"></textarea>
</form>

</body></html>


samt

<html><head>
<script language="javascript">

function tableit() {f1="#fff";f2="#797874";
  document.body.innerHTML=document.body.innerHTML.replace(/<tr/gi, "<tr onMouseOver=\"style.backgroundColor='"+f2+"';\" onMouseOut=\"style.backgroundColor='"+f1+"';\"");
}
</script>
</head>

<body onLoad="tableit();">

<table>
<tr><td id="CellId0">abc</td></tr>
<tr><td id="CellId1">abc</td></tr>
<tr><td id="CellId2">abc</td></tr>
<tr><td id="CellId3">abc</td></tr>
</table>
<br />
<table>
<tr><td id="CellId4">abc</td></tr>
<tr><td id="CellId5">abc</td></tr>
<tr><td id="CellId6">abc</td></tr>
<tr><td id="CellId7">abc</td></tr>
</table>
</body></html>
Avatar billede mclemens Nybegynder
19. marts 2006 - 14:17 #24
hmm, skift evt.:
<script language="javascript">

til:
<script type="text/JavaScript" language="JavaScript">
Avatar billede bibliotekarens Nybegynder
19. marts 2006 - 14:18 #25
jeg prøver lige :-)
Avatar billede bibliotekarens Nybegynder
19. marts 2006 - 14:33 #26
det virker upåklageligt!!! 1000 tak hvor er du bare en helt!!!

er det der body onLoad=" nødvendigt? jeg synes det virkede på et tidspunkt uden det. nå ligemeget - det hele virker nu - 1000, 1000 tak! er du sød at lægge et svar?
Avatar billede mclemens Nybegynder
19. marts 2006 - 14:43 #27
er det der body onLoad=" nødvendigt?>
- Det er det nemmeste...

1000, 1000 tak!
- det var så lidt :)

svar ;)
Avatar billede bibliotekarens Nybegynder
19. marts 2006 - 14:54 #28
tak fordi du gad bruge så meget af en søndag på det!!!
også en tak til stiness der hjalp i går!
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