Avatar billede neoman Novice
19. oktober 2007 - 16:14 Der er 12 kommentarer og
2 løsninger

.disabled automatisk styling ?

Hvis jeg har tekstbokse (tax input), og ønsker forskellige styles, afh om testboksen er disabled eller ej, findes der noget svarende til f.eks. "hover" for a-taggen, således at jeg ikke selv behøver at løbe igennem alle mine tags, checke hvad status af "disabled" er, og derpå sætte style ?
Avatar billede jgivoni Nybegynder
19. oktober 2007 - 17:39 #1
Hover skulle virke for alle elementer i nyere browere. Dvs. IKKE IE6.

Er det ikke sådan at hvis du sætter disabled attribut for et input element i html så får det automatisk en anden styling - dvs. uden brug af css?
Avatar billede neoman Novice
19. oktober 2007 - 18:03 #2
Jeps - men jeg vil gerne selv styre udseendet på den "disablede" style, deraf mit spørgsmål:)
Avatar billede olebole Juniormester
19. oktober 2007 - 18:06 #3
<ole>

Nej, det findes der ikke en CSS-selector, der kan

/mvh
</bole>
Avatar billede neoman Novice
19. oktober 2007 - 18:21 #4
Kun the "hard-way" tilbage så ? Ja okie, det havde jeg også på fornemmelsen, efter at ha' googlet som en gal.

Tak for afklaringen olebole - læg et svar.
Avatar billede jgivoni Nybegynder
19. oktober 2007 - 19:17 #5
Ok, nu er jeg med på hvad du vil.

Der findes faktisk en måde at gøre dette i css, men det understøttes ikke af alle browsere:

input[disabled]
{
background-color: red;
}

Virker i FF2, virker ikke i IE6+7
Avatar billede w13 Novice
19. oktober 2007 - 19:19 #6
Ellers må du bare tjekke det med JavaScript og så sætte CSS dér.
Avatar billede neoman Novice
19. oktober 2007 - 19:21 #7
jgivoni>> Takker, men hvis det ikke fungerer i IE6/7 så skal jeg alligevel selv kode noget :-( Læg du også et svar (fordi nu har jeg lært noget:).
Avatar billede jgivoni Nybegynder
19. oktober 2007 - 19:34 #8
Det' ok :-)
Avatar billede olebole Juniormester
19. oktober 2007 - 19:48 #9
- og her er et fra mig. Når jeg skriver: "Nej, det findes der ikke en CSS-selector, der kan", mener jeg selvfølgelig 'understøttet CSS-selector'. Vi kan engang i fremtiden - men ikke endnu  :)
Avatar billede jgivoni Nybegynder
19. oktober 2007 - 20:41 #10
olebole > man kunne også sige at der findes en CSS-selector der ikke kan ;-)
Avatar billede olebole Juniormester
19. oktober 2007 - 21:07 #11
Hehe ... lige præcis, jgivoni  ;o)

- og tak for pointene, neonman  :)
Avatar billede olebole Juniormester
19. oktober 2007 - 21:32 #12
neonman >> Du kan jo give de felter, der fra begyndelsen måtte være disabled, en bestemt CSS-klasse. Derefter kunne du lave en funktion, som enabler/disabler et element (medsend elementet som argument til funktionen).
I denne funktion kan du style elementet i samme hug - men undgå at give elementet en klasse on-the-fly. Det performer ikke godt. Brug i stedet den metode, jeg beskriver i artiklen her:
    http://www.eksperten.dk/artikler/227

- eller kik på en lidt anden måde at bruge samme teknik på her:
    http://www.eksperten.dk/spm/801523#rid6903942

Funktionen kunne f.eks. se sådan ud:

<script type="text/JavaScript">
var oStyles = {
    dis: {backgroundColor:"#f00", color:"#ff0"},
    en: {backgroundColor:"#fff", color:"#000"}
}
function enableElm(oElm, bEnabled) {
    var oCss = x = null, css = oElm.style;
    if (bEnabled===false) {
        oElm.setAttribute("disabled", "disabled");
        oCss = oStyles.dis;
    } else {
        oElm.attributes.removeNamedItem("disabled");
        oCss = oStyles.en;
    }
    for (x in oCss) css[x] = oCss[x];
}

var oGnu = null;
window.onload = function() {
  // Dette gør jeg kun, så jeg har en variabel at kalde i knapperne  :)
    oGnu = document.getElementById("gnu")
}
</script>

<p><button onclick="enableElm(oGnu, false)">Disable</button><button onclick="enableElm(oGnu)">Enable</button></p>

<p><input id="gnu" type="text" value="En eller anden tekst ..."></p>
Avatar billede neoman Novice
19. oktober 2007 - 21:43 #13
Tak for dit forslag olebole. Det er faktisk ikke så grelt: det er mig selv som disabler/enabler ting inden jeg sender dem til klienten, og kan derfor sende den rigtige css klasse med fra starten. Jeg havde blot håbet på at slippe for at fylde endnu mere på end jeg har i forvejen.

Din bemærkning om ikke at skifte klasse har jeg mødt mange gange før, og den har lissom brændt sig ind i hukommelsen allerede i foråret, hvor jeg faktisk knoklede på markering af selects i store tabeller ovre på klienten, og dér gjorde jeg som du siger: lade klasse være klasse og blot sætte kulør på efter behov:)
Avatar billede olebole Juniormester
19. oktober 2007 - 21:48 #14
Selvtak. Hvis nogen skulle undre sig over:
    oElm.setAttribute("disabled", "disabled");
    oElm.attributes.removeNamedItem("disabled");

- så er forklaringen den, at under stringente markup standarder (Strict), giver en attribut uden værdi ingen mening. Der skal altså disables sådan:
    <input type="text" disabled="disabled">

I 'gamle dage' kunne vi skrive:
    ELEMENT.disabled = true;
    ELEMENT.disabled = false;

- men i moderne fremtidsorienteret DOM-scripting, bruger vi set-/getAttribute. Da:
    <input type="text" disabled="true">

- eller:
    <input type="text" disabled="false">

- ikke giver mening, bruger man i stedet de to ovenfor ... og fjerner altså helt attributten med ELEMENT.attributes.removeNamedItem  ;o)
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