J'ai une boîte de dialogue jQuery qui demande à l'utilisateur d'entrer certaines informations. Dans ce formulaire, j'ai un bouton "continuer". Je voudrais que ce bouton "continuer" ne soit activé qu'une fois que tous les champs contiennent du contenu, sinon il restera désactivé.
J'ai écrit une fonction qui est appelée chaque fois qu'un statut de champ change. Cependant, je ne sais pas comment activer et désactiver le bouton de dialogue de cette fonction. Que devrais-je faire?
Oups et j'ai oublié de mentionner que ces boutons ont été créés comme suit:
$(function() {
$("#dialog").dialog({
bgiframe: true,
height: 'auto',
width: 700,
show: 'clip',
hide: 'clip',
modal: true,
buttons: {
'Add to request list': function() {
$(this).dialog('close');
$('form').submit();
},
'Cancel': function() {
$(this).dialog('close');
}
}
})
});
Réponses:
Vous souhaitez définir la propriété désactivée
Mise à jour : Ahha, je vois la complexité maintenant. La boîte de dialogue jQuery avait une seule ligne qui sera utile (sous la section "boutons".
Vous devrez récupérer la collection de boutons dans la boîte de dialogue, parcourir cette dernière pour trouver celle dont vous avez besoin, puis définir l'attribut désactivé comme je l'ai montré ci-dessus.
la source
.prop('disabled', true)
c'est préféré dans jQuery 1.6+C'est très simple:
la source
.prop('disabled', true)
c'est préféré dans jQuery 1.6+Vous compliquez partout une tâche simple; la boîte de dialogue jQueryUI a deux façons de définir des boutons pour une raison.
Si vous avez seulement besoin de définir le gestionnaire de clics pour chaque bouton, utilisez l'option qui prend un
Object
argument. Pour désactiver les boutons et fournir d'autres attributs, utilisez l'option qui prend unArray
argument.L'exemple suivant désactivera un bouton et mettra à jour son état correctement en appliquant toutes les classes et attributs CSS jQueryUI.
Étape 1 - Créez votre boîte de dialogue avec l'un
Array
des boutons:Étape 2 - Activez / désactivez le bouton Terminé après la création de la boîte de dialogue:
la source
each
boucle n'est pas nécessaire. Spécifiez unclass
attribut dans lebuttons
tableau et vous pouvez l'utiliser pour trouver le bon élément.Si vous créez une boîte de dialogue fournissant des identifiants pour les boutons,
nous pouvons désactiver le bouton avec le code suivant:
la source
Je voulais pouvoir trouver le bouton par son nom (car j'ai plusieurs boutons dans ma boîte de dialogue jQuery UI). J'ai également plusieurs boîtes de dialogue sur la page, j'ai donc besoin d'un moyen d'obtenir les boutons d'une boîte de dialogue spécifique. Voici ma fonction:
la source
Cela désactive un bouton:
Vous devez ajouter l'ID de la boîte de dialogue si vous avez plusieurs boîtes de dialogue sur une page.
la source
Voici l'exemple de la question modifiée pour désactiver le bouton une fois cliqué:
En outre, la question suivante sera également utile avec ceci: Comment puis-je désactiver un bouton dans une boîte de dialogue jQuery UI?
la source
J'ai trouvé un moyen facile de désactiver (ou d'effectuer toute autre action) sur un bouton de dialogue.
Vous sélectionnez simplement le parent de votre boîte de dialogue et trouvez tous les boutons. Ensuite, en vérifiant le texte de votre bouton, vous pouvez identifier vos boutons.
la source
J'ai obtenu ce travail avec la méthode
.dialog("widget")
qui renvoie la boîte de dialogue DIV elle-même. Si vous êtes dans les méthodes de dialogue:la source
Du point de vue de l'utilisabilité, il est généralement préférable de laisser le bouton activé mais d'afficher un message d'erreur si quelqu'un essaie de soumettre un formulaire incomplet. Cela me rend fou lorsque le bouton sur lequel je veux cliquer est désactivé et il n'y a aucune idée de pourquoi.
la source
Essaye ça:
la source
Voici ma fonction enableOk pour une boîte de dialogue jQuery:
Le "premier" bouton est le plus à droite. Vous désactivez le bouton et définissez la classe désactivée de la boîte de dialogue pour obtenir l'effet visuel approprié.
la source
Dans l'héritage jQuery UI (version 1.7.3), j'ai pu simplement utiliser
pour désactiver simplement le bouton sur l'élément DOM lui-même. Maintenant que nous avons mis à niveau vers la nouvelle interface utilisateur jQuery (version 1.8.7), cette méthode ne fonctionne plus dans Firefox, mais je peux simplement appeler les fonctions spécifiques de désactivation et d'activation du bouton jquery UI sur les objets jquery du bouton:
la source
haha, vient de trouver une méthode intéressante pour accéder aux bottons
Il semble que vous ne savez pas tous qu'il y a un objet événement dans les arguments ...
par ailleurs, il accède simplement au bouton depuis le rappel, dans les cas généraux, il est bon d'ajouter un identifiant d'accès
la source
Si vous voulez vraiment désactiver un bouton, j'ai constaté que vous devez également appeler la méthode .unbind () dessus. Sinon, le bouton peut toujours être actif et un double-clic peut conduire à plusieurs soumissions de formulaire. Le code suivant fonctionne pour moi:
la source
J'ai trouvé une solution de contournement qui pourrait s'appliquer aux personnes essayant de faire quelque chose de similaire. Au lieu de désactiver le bouton, j'ai mis une simple
if
déclaration dans la fonction pour vérifier si la case à cocher était cochée.Si ce n'est pas le cas, il affiche un message simple indiquant que la case doit être cochée avant la soumission.
Par exemple:
Quoi qu'il en soit, j'espère que cela aide quelqu'un.
la source
J'ai créé une fonction jQuery afin de rendre cette tâche un peu plus facile. Ajoutez simplement ceci à votre fichier JavaScript:
Désactivez le bouton 'OK' dans la boîte de dialogue avec la classe 'boîte de dialogue':
Activez tous les boutons:
Activez le bouton «Fermer» et changez de couleur:
J'espère que ça aide.
la source
Malheureusement, aucune solution de donnée ici n'a fonctionné pour plusieurs boîtes de dialogue sur la page.
Le problème était également que la boîte de dialogue d'origine ne contient pas de volet de boutons en soi, mais en est un frère.
Je suis donc venu avec la sélection par ID de dialogue comme ça:
...
...
puis la même fonction getFirstDialogButton () pourrait être utilisée plus tard pour activer le bouton, par exemple après une validation réussie.
J'espère que cela peut aider quelqu'un.
la source
Voici un exemple que je viens d'implémenter en utilisant la méthode Array d'attribution de boutons, qui me permet ensuite d'utiliser des sélecteurs d'ID plus tard - tout comme la réponse acceptée l'a déclaré à l'origine - pour activer / désactiver les boutons et même les afficher / masquer complètement comme je le suis Faire.
Après avoir soumis avec succès, je désactive et masque deux des boutons et j'active le bouton OK qui était désactivé par défaut.
J'espère que cela t'aides.
la source
J'ai créé une fonction similaire à ce que Nick a fait, mais ma méthode ne nécessiterait pas de définir la boîte de dialogue et vous pourrez obtenir les boutons d'une boîte de dialogue spécifique via l'ID (s'il en existe plusieurs dans votre application)
Donc, si vous avez créé la boîte de dialogue comme ceci:
Vous pouvez obtenir les boutons en procédant comme suit:
Pour désactiver:
Autoriser:
la source
Pour mémoire, ce message m'a aidé à résoudre mon problème. En bref, vous devez définir l'attribut désactivé sur désactivé, pas sur faux:
Voici à quoi ressemble tout le code, j'ai également ajouté quelques styles pour le rendre désactivé:
la source
Je pense que cela devrait fonctionner avec tous,
la source
Pour désactiver le bouton Enregistrer dans ma boîte de dialogue, utilisez la ligne suivante dans votre fonction.
Pour modifier un texte dans un bouton, utilisez la ligne suivante (cela change le texte du bouton Annuler en Me fermer)
la source
@Chris Vous pouvez utiliser les lignes de code suivantes pour activer / désactiver les boutons de dialogue jusqu'à ce que votre case soit cochée / décochée
Source d'origine: http://jsfiddle.net/nick_craver/rxZPv/1/
la source
L'appel
.attr("disabled", true)
fonctionne bien sûr, mais en utilisant jQuery vous aimeriez le faire de manière plus «sucrée», j'ai donc écrit une extension simple:Vous avez maintenant des fonctions
enable()
etdisable()
vous pouvez donc faire votre travail de cette façon:Qui est le même que
et
la source
Cela a fait le travail pour moi:
la source
Dans le monde jQuery, si vous souhaitez sélectionner un objet dans un ensemble d'éléments DOM, vous devez utiliser eq () .
Exemples:
ou
la source
Selon la documentation :
https://api.jqueryui.com/dialog/#option-buttons
Pour pouvoir simplement sélectionner le bouton, vous pouvez ajouter une propre classe CSS au bouton, qui doit être activée / désactivée.
Ensuite, l'activation / désactivation ressemblerait à ceci:
la source
Si quelqu'un cherche à remplacer un bouton par quelque chose comme une animation de chargement lorsqu'il est cliqué (par exemple lorsqu'un bouton "Soumettre" soumet le formulaire dans la boîte de dialogue) - vous pouvez remplacer le bouton par votre image comme ceci:
jQuery replaceWith docs
la source
Pour désactiver un bouton, dans la boîte de dialogue ouverte:
la source