Avatar billede ulrikp Nybegynder
08. september 2003 - 14:45 Der er 3 kommentarer

Vis title tag onFocus

Jeg har en title tag på et tekstfelt, og den vises fint onMouserOver, men jeg vil også gerne have at den bliver vist onFocus - d.v.s. hvis man bare tab'er sig igennem formularen, når man udfylder den.
Er der nogen måde, hvorpå jeg kan tvinge title-tag'en til at blive vist onFocus?
Avatar billede edutasia Nybegynder
08. september 2003 - 17:59 #1
Det tror jeg altså ikke, at man kan. Jeg har bl.a. prøvet med [object].fireEvent('ommouseover'), men den udløser ikke nogen title...

Du kan dog lave følgende, men jeg ved ikke, om det er overkill i forhold til dit behov...? Det fungerer på den måde, at der ligger en skjult div nederst på siden. Når et element på siden kalder funktionen showTitle i onfocus, indsættes elementets title-tekst i den skjulte div, som derpå vises i 1500 millisekunder, hvorefter den automatisk skjules igen. Det ligner en title til forveksling, men er det ikke:


<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Vis titel onfocus</title>
<style>
#idTitle {
    position:absolute;
    z-index: 10;
    background-color:#FFFFD5;
    width:20px;
    padding:2px;
    font-family: 'ms sans serif';
    font-size:8pt;
    border:1px solid black;
    white-space: nowrap;
}
</style>
<script>
var timeId;

function showTitle(elm) {
    if (timeId != null) window.clearTimeout(timeId);
    var titleElm = document.getElementById('idTitle');
    if (elm.title == '' || titleElm == null) return;
    var pElm = elm;
    var oLeft = elm.offsetLeft;
    var oTop = elm.offsetTop;
    while (pElm.parentElement.tagName != 'BODY') {
        pElm = pElm.parentElement;
        oLeft += pElm.offsetLeft;
        oTop += pElm.offsetTop;
        }
    oLeft += (elm.offsetWidth/1.5);
    oTop += 10;
    titleElm.innerText = elm.title;
    titleElm.style.pixelLeft = oLeft;
    titleElm.style.pixelTop = oTop;
    titleElm.style.display = '';
    timeId = window.setTimeout(hideTitle,1500);
}

function hideTitle() {
    timeId = null;
    var titleElm = document.getElementById('idTitle');
    if (titleElm != null) titleElm.style.display = 'none';
}
</script>
</head>
<input size=20 title="Her er titlen på et input-felt" onfocus="showTitle(this)"><br>
<textarea cols=30 rows=3 title="Her er titlen på et textarea" onfocus="showTitle(this)"></textarea>
<div id="idTitle" style="display:none"></div>
</body>
</html>
Avatar billede ulrikp Nybegynder
08. september 2003 - 18:24 #2
Jo, det er lidt for overkill. Jeg tror sgu bare jeg smider en alert i hovedet på folk i stedet - godt nok lidt irriterende, men hvad...
Avatar billede Slettet bruger
08. september 2003 - 21:41 #3
Du kan jo også vise en tekst i statuslinjen eller i en div et sted på siden.
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