6
votes

Désactiver puis réactiver la fonction de clic jQuery

J'ai un système de téléchargement de fichier, une fois le bouton de téléchargement cliqué, le fichier est ensuite chargé via AJAX. Bien que le fichier soit téléchargé, je souhaite désactiver la fonction Cliquez sur le bouton "Sélectionner des images". Actuellement, il s'agit de la fonction de clic sur le bouton de sélection de fichier: xxx pré>

qui fonctionne bien, mais je veux désactiver la fonction de clic dans la phase d'avancement du XMLHTTPQUBEST, puis réactivé. Cliquez sur la fonction lorsque je reçois une réponse 200 du serveur. J'ai essayé Bind () code> et Unbind () code> et ça fonctionne bien en chrome, mais dans Firefox, au cours du téléchargement, le bouton ne peut pas être cliqué, ce que je veux , puis après avoir reçu une réponse du serveur, le bouton est reflétable, mais dans Firefox Deux fenêtres de dialogue de sélection de fichier ouvertes en même temps. C'est en raison de la fonction ci-dessus et de me lier la fonction à nouveau à l'aide de Bind () code>. Est-ce que quelqu'un a des suggestions sur la manière d'activer, puis désactiver le bouton sans rentrer du code (fonction) de l'événement de clic. P>

quelque chose comme ça serait préférable: p>

$('#file-button').disable();
$('#file-button').enable();


0 commentaires

4 Réponses :


1
votes

Essayez attr code> jQuery fonction. xxx pré>

code testé strong> p>

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">

    $(document).ready(function()
    {
        $("#file-button").click(function(e)
        {
            e.preventDefault();
            $(this).attr('disabled','disabled');
            return false;
        });
    });

</script>

<input type="button" id="file-button" value="ClickMe" />


3 commentaires

Cela ne fonctionne pas. La fonction de clic que j'ai dans mon code JavaScript remplace l'attribut désactivé car il écoute la fonction de clic.


Votre réponse mise à jour ne fonctionne pas non plus. Codepen


Vous pouvez regarder le codepen, je ne peux pas partager tout mon code, mais si vous regardez le CodePen, ce que je veux, c'est quelque chose à mettre sous la première fonction de clic qui le désactiverait, puis après la conversion désactivée. pour l'activer. Désolé si je n'ai pas de sens. > La fonction de clic est définie> La fonction de clic est désactivée> la fonction de clic est réactivée sans ré-régler la première fonction de clic.



0
votes

Vous devez faire référence à un bouton d'entrée pour désactiver le bouton,

quelque chose comme ci-dessous xxx


4 commentaires

Cela ne fonctionne pas. La fonction de clic que j'ai dans mon code JavaScript remplace l'attribut désactivé car il écoute la fonction de clic. Et par la manière dont il n'est pas un bouton de soumission, c'est le bouton de sélection de fichier juste dans une balise (code>.


Désolé, ai-je essayé avec quoi?


sinon appelez-le par nom de classe


Désolé je ne comprends pas, pouvez-vous me donner un exemple de comment cela serait utilisé dans mon cas?



4
votes

désactiver le bouton à l'aide de jQuery $ .prop () fonction:

$("#whatever-your-form-is").on('submit', function() {
  $('#file').trigger('click');
});


4 commentaires

Je pense que vous avez une erreur logique avec cette ligne si ($ ($ (ceci) .is (': désactivé')) { Comment puis-je vérifier pour vous assurer que le désactivé est défini sur FALSE, pas vrai.


Vous avez raison. Édité pour le réparer. Il suffit d'ajouter un ! : si (! $ (Ceci) .is (': désactivé'))


Je l'ai réparé avec un peu de modification de votre code, jetez un coup d'œil à la solution dans ma question. Merci pour l'idée Eric!


J'ai préféré cette solution mais j'ai eu des problèmes avec la déclaration "si handicapée". Après le remplacer à cela, cela fonctionne: var attr = $ ("entrée [type = soumettre]"). Attr (désactivé "); Si (type d'attr == type d'indéfinie de || attr == false) {



8
votes

solution forte> - grâce à ERIC

J'ai changé ma fonction de clic initiale sur les éléments suivants: p> xxx pré>

et je définit ce qui suit pour Désactiver le bouton P>

$('#file-button').removeAttr('disabled');


3 commentaires

J'ai utilisé cela aussi mais j'ai trouvé que le sinon était inutile / redondant.


Je devais déclencher un événement de clic sur #file lorsque le bouton # fichier a été cliqué. Donc, la déclaration d'autre était nécessaire.


Cela ne fonctionne plus, veuillez vous reporter à ce lien: Stackoverflow.com / Questions / 15122526 / Désactiver-Bouton-Button-In-JQuer Y