positie cursor

  • Onderwerp starter Onderwerp starter scw
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

scw

Gebruiker
Lid geworden
5 jun 2009
Berichten
530
Goedendag,

Kan iemand mij vertellen hoe ik met HTML de cursor bij het openen van het script op een bepaalde positie (lees: table) kan krijgen?

Ik probeer iets met
Code:
body onLoad=document.forms.MyForm.realname.focus
, maar ik weet niet of ik op de juiste weg zit. Heeft iemand de oplossing??

HTML:
.HTMLBody = "<body onLoad=document.forms.MyForm.realname.focus()><table cellpadding=20 width=600 align=center border-color=#999999 border-style=solid border-width=thin><td>"
.HTMLBody = .HTMLBody & "<font size=5 face=Arial color=#336699>Goeievraag<br></font>"
.HTMLBody = .HTMLBody & "<font size=2 face=Arial><br>"
.HTMLBody = .HTMLBody & "Graag wil ik dezelfde dunne grijze lijn als de andere code (zie voorbeeld)<br>"
.HTMLBody = .HTMLBody & "<br>"
.HTMLBody = .HTMLBody & "<tr>Hoe kan ik de cursor automatisch op direct achter de volgende puntjes krijgen bij openen: hier dus (???)</tr>"
.HTMLBody = .HTMLBody & "<tr></font><font size=1 face=Verdana color=#999999><br>Voorbeeldje<br></font></tr></td></table></body>
 
Dank voor je reactie Supersnail.

Zou je/iemand een voorzet kunnen geven hoe ik dit zou neer moeten zetten dan? Het lastige vind ik ook dat ik niet weet hoe ik de tweede rij van de table definieer, waar de cursor uiteindelijk moet staan... :confused:

Bij voorbaat dank,

scw
 
Hoi scw,
Ik denk dat de focus moet komen op een element waarop iets te focussen valt, bv. een in te vullen tekstveld in het formulier.
Dan kan je het betreffende tekstveld bv. een id="foc" meegeven, die je dan aanroept via een javascript-functie:
HTML:
<script type="text/javascript">
    window.onload = function(){
        var foc = document.getElementById('foc').focus();
    }
</script>
Met vriendelijke groet,
CSShunter
 
Hartelijk dank voor deze duidelijke reactie CSSHunter!

Ik heb van het weekend vele uren lopen goochelen met de code, echter ik kan het nog niet werkend krijgen :( daar ik 0 kennis heb van CSS. Zou het mogelijk zijn om een werkend voorbeeldje te posten??

Nogmaals dank,
scw
 
Hoi scw,
Hé, als ik mijn voorbeeldje van reactie nr.#4 bekijk in Firefox, Chrome, Internet Explorer, Opera en Safari, dan werkt de focus gewoon.
D.w.z. in de tweede tabel staat de knipperende cursor in de tweede rij: keurig in het invulvakje van het formulier.
  • Hm, in IE8 staat de cursor wel in het goede vakje, maar knippert niet (in IE7 wel).

Om het vakje-met-focus er extra uit te laten springen, kan je bv. als css gebruiken:
Code:
input:focus {
	background: yellow;
	color: red;
	}
Nu is het vakje geel geworden, met een rode knipperende cursur; en als je tekst gaat invullen in het vakje, wordt die ook rood (zolang het vakje de focus heeft).
Oftewel: klik ergens anders, en de kleuren verdwijnen weer.
Als je op het invulvakje in de bovenste tabel klikt, dan krijgt dat de focus en de kleuren.
Ook hier is IE weer spelbreker:
  • In IE8 knippert de cursor nog steeds niet, en deze is zwart i.p.v. rood (de ingetikte tekst wordt wel rood).
  • In IE7 en eerder komen er helemaal geen kleuren. Oorzaak: de css-eigenschap :focus wordt niet ondersteund als het niet om een link gaat.
  • Voor IE7 en eerder kan dat opgelost worden met wat extra javascript.
Dat staat in de broncode van dit:
Is dat wat je bedoelt?

Met vriendelijke groet,
CSShunter
 
bijna...

OK dank voor de verduidelijking, ik waardeer je moeite om me te helpen! :thumb:
Helaas ben ik nog niet helemaal verder gekomen :confused: Ik plaats hier de code welke ik nu toepas. Helaas heeft het geen enkel effect. Mogelijk doe ik wat verkeerd... of ziet iemand toevallig iets dat niet klopt.

Code:
.HTMLBody = "<script type=text/javascript>"
.HTMLBody = .HTMLBody & "window.onload = function(){"
.HTMLBody = .HTMLBody & "var foc = document.getElementById('foc').focus();"
.HTMLBody = .HTMLBody & "}"
.HTMLBody = .HTMLBody & "</script>"

Vervolgens geef ik een id aan de <TR> tag:
Code:
.HTMLBody = .HTMLBody & "<tr id=foc>"
 
Hoi scw,
Nu snap ik 'm even niet. Je wilt de focus op een hele tabel-rij hebben? Doorgaans zit de focus op een element waar de cursor naar toe moet en wat je kan aanklikken, zoals een link of een form-field (text-input o.i.d.).
Wat wil je precies bereiken met de focus op een tabel-rij?

Met vriendelijke groet,
CSShunter
 
Hoi csshunter,

Goede vraag:

De gedachte is als volgt, ik zou graag willen dat de gebruiker ziet:

Eventuele toelichting: (hier knippert cursor)

Dus dan kan diegene meteen een toelichting typen, terwijl er nu eerst nog naar die table row geklikt moet worden. Dat is het gebruiksgemak wat ik voor ogen heb.

Sorry dat het nog niet werkt met je uitleg...
 
Aha, maar dan moet het id="foc" toch aangehaakt worden aan het textveld van dienst?

D.w.z. niet vastgeknoopt aan de <tr> (tabel-rij) of de <td> (tabel-cel) waar dat tekstveld in komt, maar aan het tekstveld zelf:
HTML:
<input id="foc" type="text" class="input_txt" size="20" />
Dat zou dan iets moeten worden als:
HTML:
.HTMLBody = .HTMLBody & "<tr><td><input id='foc' type='text' class='input_txt' size='20' /></td>" ... enz.
Werkt het dan ook niet?

Met vriendelijke groet,
CSShunter
 
Aarrgghhh... hij werkt helaas nog niet :confused:

Ik heb hem letterlijk overgenomen van je:

Code:
.HTMLBody = "<script type=text/javascript>"
.HTMLBody = .HTMLBody & "window.onload = function(){"
.HTMLBody = .HTMLBody & "var foc = document.getElementById('foc').focus();"
.HTMLBody = .HTMLBody & "}"
.HTMLBody = .HTMLBody & "</script>"
...
.HTMLBody = .HTMLBody & "<tr><td class=tdbottom><input id=foc type=text size=20>Eventuele toelichting:" & "</td></tr></table>"

Ik heb alleen de class eruit gehaald omdat ik die niet gedefinieerd heb. Overigens heb ik het ook eerst met de class erin getest.

Heb zelf nog eens wat rondgezocht, mogelijk vergeten we de trigger ofzo?? De variant van een on_open event van vba? De focus wordt natuurlijk opgeroepen met het openen van een Outlook venster? Ik bedenk ook maar wat hoor...

Het enige resultaat wat ik nu krijg is exact dit:
[ ] Eventuele toelichting:
 
Ai, dat is nou jammer. :confused:
Ik heb hem letterlijk overgenomen van je:
Niet helemaal: je hebt geen quotes om de waardes van de eigenschappen staan; dat moet eigenlijk wel. Omdat je al dubbele " gebruikt, kunnen het hier enkele ' worden:
HTML:
...
.HTMLBody = .HTMLBody & "<tr><td class='tdbottom'>Eventuele toelichting: <input id='foc' type='text' size='20'>" & "</td></tr></table>"
Of misschien wil VBA het met escape \ slashes voor een " binnen een " zien.
Maar ik weet niet of dat de oorzaak is.

Nog even checken voor de veiligheid:
  • Op de puntjes hierboven ... staat wel het eind van de </head> en het begin van de <body> met de <table> en zo?
  • Is in de css wel de #foc:focus {background: yellow; color: red;} opgenomen, als je behalve de knipperende cursor ook een verschil in kleuren wilt zien?
Als dat klopt, dan zal het waarschijnlijk inderdaad aan het VBA-omhulsel liggen: ik heb sowieso geen enkel verstand van VBA, en ook geen idee van met welk doel en hoe jij het wilt toepassen (bv. in welk programma en/of in welk type document: iets met Outlook?).
Dus daar kan ik helaas geen zinnig woord over zeggen. :confused:

Maar omdat het html-gedeelte op zich wel werkt, en hier in de forum afdeling "Programmeren > HTML" vooral html- en css-mensjes langskomen, kan je de vraag denk ik beter nog eens stellen in de speciale VBA-afdeling van dit forum:
Met vriendelijke groet,
CSShunter
 
Laatst bewerkt:
helaas...

Beste CSShunter,

Ik waardeer je geweldige inzet. Bedankt hiervoor. Ik heb al je punten nogmaals (streng!) toegepast:

HTML:
.HTMLBody = "<script type=text/javascript>"
.HTMLBody = .HTMLBody & "window.onload = function(){"
.HTMLBody = .HTMLBody & "var foc = document.getElementById('foc').focus();"
.HTMLBody = .HTMLBody & "}"
.HTMLBody = .HTMLBody & "input:focus {"
.HTMLBody = .HTMLBody & "background: yellow;"
.HTMLBody = .HTMLBody & "color: red;"
.HTMLBody = .HTMLBody & "}"
.HTMLBody = .HTMLBody & "</script>"
...
.HTMLBody = .HTMLBody & "<tr><td class='tdbottom'><input id='foc' type='text' size='20'>Eventuele toelichting:" & "</td></tr></table></body>"

Maar helaas, het werkt nog steeds niet. Ik ga dus je andere advies opvolgen en naar de VBA sectie van Helpmij... hopelijk kan men daar nog wat verderkomen.

Nogmaals dank,
scw :thumb:
 
Ah! :)
Wat er nu gebeurd is, is dat de css-styles in het javascript gemixt zijn alsof het een stukje stylesheet is, en dat kan niet werken.
Wat beter zal gaan (hoop ik), is:
[JS].HTMLBody = "<script type=text/javascript>"
.HTMLBody = .HTMLBody & "window.onload = function(){"
.HTMLBody = .HTMLBody & "var foc = document.getElementById('foc').focus();"
.HTMLBody = .HTMLBody & "}"
.HTMLBody = .HTMLBody & "</script>"
...
.HTMLBody = .HTMLBody & "<tr><td class='tdbottom'>"
.HTMLBody = .HTMLBody & "<input id='foc' type='text' size='20'>"
.HTMLBody = .HTMLBody & "Eventuele toelichting:" & "</td></tr></table></body>"[/JS]
met in de <head> de stijl voor als een <input> de focus krijgt.
Misschien gaat dat wel zo (dit is een pure gok ;) ):
[JS]...
.HTMLHead = .HTMLHead & "<style type='text/css'>"
.HTMLHead = .HTMLHead & "input:focus { background: yellow; color: red;}"
.HTMLHead = .HTMLHead & "</style>"
...[/JS]
(er staat hier "Javascript code" boven, maar dat is de enige manier om de kleurtjes goed te krijgen)

Met vriendelijke groet,
CSShunter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan