2011-02-07 4 views
1

J'ai un extrait de code qui désactive le bouton de téléchargement jusqu'à ce que quelque chose est sélectionné pour être téléchargé. Je viens de remarquer que cela ne fonctionne pas dans IE9 Beta. Ai-je besoin de l'itérer d'une manière ou d'une autre pour IE? Voici mon code:Désactiver le bouton avec jQuery - IE9 problème

$("input:file").change(function(){ 
    if ($(this).val()) { 
     $("input:submit").attr("disabled",false); 
    } 
}); 

MISE À JOUR:

J'ai modifié mon code pour ajouter une alerte:

$("input:file").change(function(){ 
    alert("..."); 
    if ($(this).val()) { 
     $("input:submit").removeAttr("disabled"); 
    } 
}); 

En alerte FF se allume et permet le bouton, en alerte IE ne se déclenche pas.

UN PLUS MISE À JOUR:

Le problème est allé de l'avant sans modification de code. Dans IE9, il y a une nouvelle icône pour "COMPATIBILITY VIEW" à côté du champ d'adresse Web. Je l'ai cliqué pour activer, puis à nouveau cliqué pour désactiver et le problème est parti. Ma conjecture, IE bloqué jQuery en quelque sorte et mis en cache. En modifiant les paramètres de compatibilité, j'ai peut-être supprimé les paramètres mis en cache. BIZARRE!

+0

Savez-vous exactement quelle fonction l'appel ne fait pas ce qu'il est censé faire? par exemple, l'événement 'change' ne se déclenche-t-il jamais? Est-ce que '$ (this) .val()' ne retourne jamais une valeur véridique? etc. –

+0

Lorsque je sélectionne un fichier, le bouton reste désactivé. – santa

+1

$ ("input: submit") removeAttr ("disabled") qui devrait activer l'élément –

Répondre

3

essayez d'utiliser $("input:submit").attr("disabled","disabled"); pour désactiver et $("input:submit").removeAttr("disabled")

+0

Cela a fonctionné pour moi. –

0

Il y a là-bas des navigateurs - évidemment aussi IE9 - qui ne vous permettent pas d'accéder à la valeur d'une entrée de fichier déposé pour des raisons de sécurité.

+0

Puis-je effectuer d'autres vérifications? onclick peut-être? – santa

0

Voici le code que j'utilise pour désactiver ou réactiver un contrôle:

function handleControlDisplay(className, foundCount, checked) { 



    var button = jQuery(className); 



    if (foundCount > 0 && foundCount == checked) { 

     // enable 

     button.removeAttr("disabled"); 

    } 

    else { 

     // set the disabled attribute 

     button.attr("disabled", "true"); 

    }; 

} 
0

Voici un tutoriel détaillé sur mon site Web montrant comment faire: jQuery disable button. En un mot la meilleure façon de désactiver un bouton en utilisant jQuery utilise le code suivant:

$('.buttonElement').attr('disabled', 'disabled'); //TO DISABLED 
$('.buttonElement').removeAttr('disabled'); //TO ENABLE 

Hope this helps quelqu'un.