Avatar billede losbutcher Nybegynder
18. februar 2008 - 13:00 Der er 9 kommentarer

Event på en disabled checkbox

Hej

Er det muligt i javascript at fange eksempelvis et onclick event selvom objektet er disabled?
Ex:

var tempCheckBox = document.createElement('input');
tempCheckBox.type = 'checkBox';
tempCheckBox.disabled = true;
tempCheckBox.onclick = function() {
    alert('click');
}

I ovenstående vil jeg ikke få en alert hvis der clickes på boxen. Findes der en anden form for event eller en eller anden workaround?
Avatar billede olebole Juniormester
18. februar 2008 - 13:59 #1
<ole>

En rigtig god 'workaround' ville måske være, du ikke disable'er checkbox'en  ;D

Slet denne linje:
    tempCheckBox.disabled = true;

/mvh
</bole>
Avatar billede olebole Juniormester
18. februar 2008 - 14:01 #2
- og nej, du kan naturligvis ikke få en onclick-event til at fungere på et disabled element. Hvad skulle disabled dog ellers gøre ved en checkbox, end gøre den umulig at klikke i?  ;o)
Avatar billede losbutcher Nybegynder
18. februar 2008 - 15:12 #3
Jeg forståer disabled som at det ikke er muligt for brugeren at ændre værdien. Ydermere synliggør den at den ikke kan ændres. Det kunne jo være at den alligevel smed en eller anden form for event.

Jeg spørger fordi jeg vil gøre det tydeligt for brugeren at det ikke er muligt at klikke i boxen. Desværre er der mange der prøver alligevel og ikke fatter hvorfor de ikke kan krydse den af, derfor ville jeg smide en forklaring hvis man alligvel prøvede at klikke.

Jeg kunne selvfølgelig gå igang med at få boxen til at se ud som om den var disabled, og så selv håndtere hvert click event alt efter om den er "disabled" eller ej.
Men min erfaring med sådanne workarounds er at det giver en masse uforudsete konsekvenser og bugs, såsom hvis brugeren får klikket for hurtigt og lignende. Det ville spare mig for en del testarbejde hvis der fandtes en anden løsning.
Avatar billede losbutcher Nybegynder
18. februar 2008 - 15:18 #4
Jeg overvejer lidt måske bare at smide checkboxen i et eller andet element, såsom en <span> og så give denne en onclick funktion, der smider en alert hvis dens checkbox er disabled og ellers gør ingenting. Evt. lavet som et eller andet generelt prototype objekt.

Eller er dette for grimt?
Avatar billede losbutcher Nybegynder
18. februar 2008 - 16:19 #5
Jeg tror sq bare jeg bruger den sidste løsning jeg postede.
Avatar billede olebole Juniormester
18. februar 2008 - 23:01 #6
Nu behøver du i hvertfald ikke i IE eller FF at gøre noget for at vise, feltet er disabled ... det fremgår ganske tydeligt. Det, at et felt er gråt, er en velkendt måde at vise, at et felt er disabled ... og det sker automatisk i de store browsere  :)

Hvis du mener, det er absolut nødvendigt, kunne du jo skrive noget à la:
    <label for="gnu" onclick="alert('Nono ...!')">
    En eller anden tekst: <input id="gnu" name="noget" type="checkbox" disabled="disabled"></label>
Avatar billede losbutcher Nybegynder
19. februar 2008 - 10:42 #7
Det er nok mig der ikke fik forklaret tydeligt nok. Det er tydeligt for brugeren at boxen er disabled, men ikke tydeligt hvorfor den er disabled.
Det er et krav at brugeren får besked om hvorfor en checkbox er disabled, hvis denne prøver at klikke på den alligevel.

Prøvede denne her, men det virker ikke. Label fylder lidt mere end boxen, så hvis jeg klikker på den uden om det disabled element eller hvis dette ikke er disabled, bliver alert'en fyret af.

var DisableObjectHandler = Class.create();
DisableObjectHandler.prototype = {
    initialize: function(element) {
        this.element = element;
        this.labl = document.createElement('label');
        this.labl.setAttribute('for', element.id);
        this.labl.appendChild(this.element);
        this.labl.onclick = function() {
            alert('object clicked');
        }
    }
}
Avatar billede roenving Novice
19. februar 2008 - 12:42 #8
Hvad med at bruge en title:

<input type="checkbox" name="check1" disabled="disabled" title="Accepter betingelserne først">
Avatar billede losbutcher Nybegynder
20. februar 2008 - 13:05 #9
@roenving - Det er en meget god ide som jeg også har overvejet, men det er ikke godt nok da det kræver at man holder musen stille i et stykke tid før beskeden bliver vist, hvilket det er langt fra alle der gør.
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