CRS Webbproduktion
Webbproduktion när den är som bäst

Sätta fokus på aktiv textruta

juli 28, 2008 15:08 by Admin

Jag råkade i en situation där jag ville byta färg på ramen på en textruta, när den fick fokus. Min första lösning var denna:

<input type="text" id="txt" onfocus="this.style.borderColor:'Red';" onblur="this.style.borderColor:'';" />

Det fungerar alldeles utmärkt, men jag ville ju gärna göra en smartare och mer flexibel lösning. Det resulterade i följande javascript:

function setBorderByTagName(tagName, focusClassName, blurClassName)
{
     if (!document.getElementsByTagName) return;
     var textboxes = document.getElementsByTagName(tagName);
     for (var i=0; i<textboxes.length; i++) {
        var textbox = textboxes[i];
        if (textbox.getAttribute("rel"))
        {
            if (textbox.getAttribute("rel").indexOf("border")!=-1)
            {
                textbox.onfocus = function(){
                    this.className = focusClassName;
                    return false;
                }
                textbox.onblur = function(){
                    this.className = blurClassName;
                    return false;
                }
            }
        }
    }
}
window.onload = setBorderByTagName("input", "focusClass", "blurClass"); 

Sedan är det bara att markera mina textrutor med rel="border, så här:

<input type="text" id="txt" rel="border" /> 

Happy coding!


Kommentarer

augusti 26. 2008 14:09

Peter

Går det att tillämpa denna metod på kontrollen asp:TextBox?
Den har inget "rel"-attribut i alla fall.

Peter

september 5. 2008 08:25

Stefan

Hej Peter!

Självklart går det att använda för asp:TextBox.
Du hittar inte rel i intellisensen, men egenskaper som inte hanteras av kompilatorn skickas vidare som dom är. Därför går det utmärkt att använda <asp:TextBox runat="server" rel="external" />

Stefan

Lägg till kommentar




  Country flag

biuquote
  • Kommentar
  • Live överblick
Loading