Avatar billede mandenmedplanen Nybegynder
13. oktober 2008 - 13:01 Der er 18 kommentarer og
1 løsning

highlight textbox

Nogen der har en hurtig løsning til hvordan man med en class i CSS kan highlighte en textbox når man klikker ind i den?

Jeg vil gerne have en almindelig textbox til at have
.tb
{
border 1px solid #555
}
når man går ind i den...

Nogen der kan hjælpe?
Avatar billede coderdk Praktikant
13. oktober 2008 - 13:27 #1
Noget i stil med:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>
  <head>
    <title>test</title>
    <style type="text/css">
    .focused {
      border: 1px solid #555;
    }
    </style>
    <script type="text/javascript">
    function borderMe(what,on)
    {
      if ( on )
      {
        what.className = 'focused';
      }
      else
      {
        what.className = '';
      }
    }
    </script>
  </head>
  <body>
    <form>
      <input type="text" onfocus="borderMe(this,1)" onblur="borderMe(this,0)" /><br />
      <input type="text" onfocus="borderMe(this,1)" onblur="borderMe(this,0)" /><br />
      <input type="text" onfocus="borderMe(this,1)" onblur="borderMe(this,0)" /><br />
      <input type="text" onfocus="borderMe(this,1)" onblur="borderMe(this,0)" /><br />
      <input type="text" onfocus="borderMe(this,1)" onblur="borderMe(this,0)" /><br />
    </form>
  </body>
</html>
Avatar billede mandenmedplanen Nybegynder
13. oktober 2008 - 13:43 #2
Ja, det var lige det - takker - smid et svar og modtag dine velfortjente point;-)
Avatar billede coderdk Praktikant
13. oktober 2008 - 13:56 #3
Ok :)
Avatar billede mandenmedplanen Nybegynder
13. oktober 2008 - 14:11 #4
Men lige én ting mere - to faktisk...

1. Jeg vil gerne have den jave ind i en .js fil, men så brokker den sig over "Too many charakters in literal"... ved du hvorfor den gør det?

2. Jeg bruger asp.net 2.0 og min textbox ser nu sådan ud:
<asp:TextBox ID="tbNavn" runat="server" onclick="borderMe(this,1)" onblur="borderMe(this,0)"></asp:TextBox>

det virker, men den brokker sig over at "onclick" og "onblur" ikke er "valid attributes"... har du eventuel en smart måde til dette også?
Avatar billede coderdk Praktikant
13. oktober 2008 - 14:44 #5
Du blander serverside og clientside - Prøv:

<asp:TextBox ID="tbNavn" runat="server" onclientfocus="borderMe(this,1)" onclientblur="borderMe(this,0)"></asp:TextBox>
Avatar billede coderdk Praktikant
13. oktober 2008 - 14:44 #6
(hvorfor i øvrigt click og ikke focus?)
Avatar billede coderdk Praktikant
13. oktober 2008 - 14:45 #7
(man kan jo komme til feltet med tab osv)
Avatar billede mandenmedplanen Nybegynder
13. oktober 2008 - 15:06 #8
onclientfocus og onclientblur vil den ikke tage imod... Jeg havde ikke tænkt på at onclick ikke gjaldt ved tab - det er dog meget logisk...

Det er da egentlig også underligt at
<input type="text" onfocus="borderMe(this,1)" onblur="borderMe(this,0)" />

virker og at der ikke er lavet en ligende standard for
<asp:TextBox ID="TextBox2" runat="server" onfocus="borderMe(this,1)" onblur="borderMe(this,0)"></asp:TextBox>

Har du andre gode ideer?
Avatar billede coderdk Praktikant
13. oktober 2008 - 15:35 #9
du kan prøve at lave det programmatisk:

ditElement.Attributes.Add("onfocus", "borderMe(this,1)")
ditElement.Attributes.Add("onblur", "borderMe(this,0)")
Avatar billede olebole Juniormester
13. oktober 2008 - 19:55 #10
<ole>

Event handlers må ikke sættes som attributter. Brug i stedet 'addEventListener' i W3C compliant browsere - og 'attachEvent' i IE

/mvh
</bole>
Avatar billede coderdk Praktikant
13. oktober 2008 - 20:16 #11
olebole, Det er serverside, ikke clientside attributten skal sættes ;) F.eks. Page_Load
Avatar billede coderdk Praktikant
13. oktober 2008 - 20:27 #12
E.g.

<script runat="server">
tbNavn.Attributes.Add("onfocus", "borderMe(this,1)")
tbNavn.Attributes.Add("onblur", "borderMe(this,0)")
</script>
<form runat="server">
<asp:TextBox ID="tbNavn" runat="server"></asp:TextBox>
</form>
Avatar billede olebole Juniormester
14. oktober 2008 - 01:48 #13
Dooohhhh ... sæ'føl'somt  ;D
Avatar billede olebole Juniormester
14. oktober 2008 - 01:57 #14
Så vidt jeg husker, kan du godt bruge:
    <asp:TextBox ID="TextBox2" runat="server" onfocus="borderMe(this,1)" onblur="borderMe(this,0)"></asp:TextBox>

- det er bare ikke dokumenteret, og Visual Studio kender derfor ikke kommandoen. Har du testet, om det faktisk virker? Jeg er næsten sikker på, det virker med onclick.

Ellers kan du vel bruge coderdks version - og du kan vel også bruge:
    tbNavn.Attributes["onfocus"] = "borderMe(this,1)"
Avatar billede coderdk Praktikant
14. oktober 2008 - 02:35 #15
Sikker på at onclick ikke tror at det er en server side event? Jeg er lidt i tvivl...
Det er sgu for lang tid siden jeg har lavet .NET... Længere tid siden jeg har lavet ASP.NET :P heheh
Avatar billede olebole Juniormester
14. oktober 2008 - 03:13 #16
Jeg er heller ikke sikker. Er ret ny på C# og .net - men har lige fået nyt job, hvor jeg skal arbejde og videreudvikle på en stor moss-applikation, så deeeeeet .....  ;o)
Avatar billede olebole Juniormester
14. oktober 2008 - 03:14 #17
- men man kan jo teste  =)
Avatar billede mandenmedplanen Nybegynder
14. oktober 2008 - 10:06 #18
Først vil jeg gerne sige MANGE TAK for alle de gode svar - jeg har brugt det fra coderdk

ditElement.Attributes.Add("onfocus", "borderMe(this,1)")
ditElement.Attributes.Add("onblur", "borderMe(this,0)")

og fået det til at virke - og VS godkender det...

En sidste lille ting, er der nogen der har en ide ti hvordan man kan gøre det med færrest linier - min side det skal implementeres på har 24 text felter, og det bliver jo en lang kode med to linier til hver textbox
Avatar billede coderdk Praktikant
14. oktober 2008 - 12:11 #19
Jeg vidste den MCAD.NET certificering ville betale sig :P hehe
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