2010-08-20 5 views
2

Sighbouton Désactivé encore cliquable dans IE8 avec jQuery.live (clic) l'événement

Je continue à avoir des problèmes étranges avec IE 8.

Je cette

<input name="Btn_Edit" disabled="disabled" id="Btn_Edit" type="button" value="Edit"/> 

$(function() 
{ 
    $('#Btn_Edit').live('click', function() 
    { 

     alert('hi'); 

    }); 
}); 

Ainsi, dans tous les autre navigateur cette alerte ne serait jamais déclenchée car mon bouton est désactivé. Dans IE 8, il va dans mon bouton d'édition et déclenche l'alerte.

Je ne sais pas pourquoi.

http://jsfiddle.net/QgceL/

Vous pouvez voir par vous-même il. Il suffit de charger IE 8 et essayez-le.

Cependant si je le change à ceci.

http://jsfiddle.net/YD2eS/

Il semble fonctionner. Je ne sais toujours pas pourquoi cela amène un curseur différent au lieu d'un pointeur.

De toute façon, le problème semble être avec un événement de clic direct.

+0

Cela a à voir avec la façon dont jQuery gère les événements "en direct". – mhitza

+0

Juste un commentaire, car ce n'est pas une réponse ... Je ne savais pas que jQuery exposait un moyen de répondre à un clic sur un bouton désactivé ... il serait très utile pour faire apparaître un message expliquant à l'utilisateur * pourquoi * le bouton sur lequel ils ont essayé de cliquer est désactivé ... – Rob

+0

@Rob, vous pouvez le faire avec des bulles d'événements si vous détectez sur le conteneur un élément. Le event.target peut aussi vous donner des informations dans ces circonstances. –

Répondre

0

changer votre sélecteur:

$('#Btn_Edit[disabled!=true]') 

Notez que cela ne fonctionnera pas si votre sélecteur est $ ('# Btn_Edit [! Disabled = désactivé])

que vous pouvez voir si vous alert($('#Btn_Edit').attr('disabled')); il sera 'faux' quand il n'est pas désactivé et vrai s'il est désactivé.

est ici une page de violon pour le voir en action: http://jsfiddle.net/QgceL/3/

+0

ya j'ai fait quelque chose comme ça. J'ai plutôt fait if ($ ('# Btn_Edit'). Attr ('disabled') == false) // continue dans l'événement click réel. Je ne suis pas sûr que votre chemin soit plus rapide.Je trouve aussi que confus je ne sais jamais si mettre .attr ('disabled', true) ou .attr ('disabled', 'disabled'). – chobo2

0

Remplacez live par click. Oui, c'est trop bizarre! Je ne sais pas pourquoi cela arrive.

+0

C'est maintenant une option. J'ai 4 onglets d'ajax. Si un utilisateur passait à l'onglet suivant et revenait, le bouton ne fonctionnerait pas. Pour l'instant je suppose que je dois faire une vérification pour voir si elle est réellement désactivée ou non dans l'événement de clic réel jusqu'à ce que quelqu'un comprenne pourquoi cela se produit. – chobo2

+0

Vous pouvez exécuter des classeurs d'événements chaque fois que l'utilisateur clique sur un onglet, dans un rappel ajax. – Topera

+0

classeurs d'événements? Je ne suis pas – chobo2

0

Cela semble être un bug jQuery, qui se passe dans les versions 1.5.x. < Ce post a été fait probablement quand jQuery 1.4 était la dernière version, mais les nouvelles versions n'ont pas ce problème.

Questions connexes