Parfois, j'utilise des ancres conçues comme des boutons et parfois j'utilise simplement des boutons. Je veux désactiver des objets clicky spécifiques afin que:
- Ils ont l'air handicapés
- Ils cessent d'être cliqués
Comment puis-je faire ceci?
jquery
html
css
twitter-bootstrap
biofractal
la source
la source
role="button"
pour les liens, mais cela ne semble pas affecter ce problème. getbootstrap.com/css/#buttonsa.btn[disabled]
air désactivé tout en restant cliquable est un bogue dans Bootstrap IMO. L'attribut[disabled]
doit uniquement apparaître désactivé pourbutton
etinput
.Réponses:
Boutons
Les boutons sont simples à désactiver, tout comme
disabled
une propriété de bouton gérée par le navigateur:Pour les désactiver avec une fonction jQuery personnalisée, vous utiliseriez simplement
fn.extend()
:Bouton JSFiddle désactivé et démo d'entrée .
Sinon, vous utiliseriez la
prop()
méthode de jQuery :Étiquettes d'ancrage
Il convient de noter que ce
disabled
n'est pas une propriété valide pour les balises d'ancrage. Pour cette raison, Bootstrap utilise le style suivant sur ses.btn
éléments:Notez comment la
[disabled]
propriété est ciblée ainsi qu'une.disabled
classe. La.disabled
classe est ce qui est nécessaire pour faire apparaître une balise d'ancrage désactivée.Bien sûr, cela n'empêchera pas les liens de fonctionner lorsque vous cliquez dessus. Le lien ci-dessus nous amènera à http://example.com . Pour éviter cela, nous pouvons ajouter un simple morceau de code jQuery pour cibler les balises d'ancrage avec la
disabled
classe à appelerevent.preventDefault()
:Nous pouvons basculer la
disabled
classe en utilisanttoggleClass()
:Démo de liaison désactivée JSFiddle .
Combiné
Nous pouvons ensuite étendre la fonction de désactivation précédente effectuée ci-dessus pour vérifier le type d'élément que nous tentons de désactiver à l'aide
is()
. De cette façon , nous pouvons ,toggleClass()
si ce n'est pas uninput
oubutton
élément, ou bascule ledisabled
si elle est la propriété:Démo JSFiddle combinée complète .
Il convient de noter en outre que la fonction ci-dessus fonctionnera également sur tous les types d'entrée.
la source
return false if $(@).prop('disabled')
gestionnaires de clics personnalisés? Sans cette ligne, ces gestionnaires sont exécutés malgré tout.disabled
n'est pas une propriété de balise d'ancrage valide, donc cela ne devrait pas être utilisé. L'événement click j'ai donné est basé sur la.disabled
classe, mais ce que vous pouvez utiliser esthasClass('disabled')
- si cela est vrai,preventDefault
.disabled
propriété sur l'ancre. C'est un objet dynamique, donc je peux simplement le définir et l'utiliser, comme si j'étais en train d'étendre le jeu de fonctionnalités de l'ancre? J'ai mis à jour ma réponse ci-dessous pour le montrer. Qu'est-ce que tu penses? Est-ce mal? De plus, devez-vous participer à.off()
l'preventDefault
événement click lorsque vous réactivez un lien?disabled
propriété personnalisée , vous pouvez utiliser desdata-*
attributs . Comme Bootstrap applique déjà les mêmesdisabled
styles de propriété,class="disabled"
vous pouvez également vous fier à la classe.preventDefault
à tous les événements de clic d'ancrage, je devrai les détacher lorsque le lien sera réactivé. Ou est-ce que je comprends mal quelque chose?Je ne peux pas penser d'une manière plus simple / plus facile! ;-)
Utilisation de balises d'ancrage (liens):
Pour activer la balise d'ancrage:
Pour désactiver la balise d'ancrage:
la source
Supposons que vous ayez un champ de texte et un bouton d'envoi,
Désactivation:
Pour désactiver un bouton, par exemple, soumettre un bouton, il vous suffit d'ajouter un attribut désactivé comme,
Après avoir exécuté la ligne ci-dessus, la balise html de votre bouton de soumission ressemblerait à ceci:
Notez que l'attribut «désactivé» a été ajouté .
Activation:
Pour activer le bouton, par exemple lorsque vous avez du texte dans le champ de texte. Vous devrez supprimer l' attribut disable pour activer le bouton comme,
Maintenant, le code ci-dessus supprimera l'attribut «désactivé».
la source
Je sais que je suis en retard à la fête, mais pour répondre spécifiquement aux deux questions:
"Je veux juste désactiver les clicky-choses spécifiques pour que:
Cela peut-il être difficile? "
Ils arrêtent de cliquer
1. Pour les boutons aiment
<button>
ou<input type="button">
vous ajoutez l'attribut:disabled
.2. Pour les liens, TOUT lien ... en fait, tout élément HTML, vous pouvez utiliser des événements de pointeur CSS3 .
La prise en charge du navigateur pour les événements de pointeur est impressionnante par l'état de l'art d'aujourd'hui (5/12/14). Mais nous devons généralement prendre en charge les navigateurs hérités dans le domaine IE, donc IE10 et les versions antérieures NE prennent PAS en charge les événements de pointeur: http://caniuse.com/pointer-events . Donc, utiliser l'une des solutions JavaScript mentionnées par d'autres ici peut être la voie à suivre pour les navigateurs hérités.
Plus d'informations sur les événements de pointeur:
Ils ont l'air handicapés
Évidemment, c'est une réponse CSS, donc:
1. Pour les boutons comme
<button>
ou<input type="button">
utilisez le[attribute]
sélecteur:-
Voici une démo de base avec les éléments que j'ai mentionnés ici: http://jsfiddle.net/bXm5B/4/
J'espère que cela t'aides.
la source
Si, comme moi, vous voulez juste désactiver un bouton, ne manquez pas la réponse simple subtilement cachée dans ce long fil:
la source
@James Donnelly a fourni une réponse complète qui repose sur l'extension de jQuery avec une nouvelle fonction. C'est une excellente idée, donc je vais adapter son code pour qu'il fonctionne comme j'en ai besoin.
Extension de jQuery
Usage
Le code traitera un seul élément ou une liste d'éléments.
Les boutons et les entrées prennent en charge la
disabled
propriété et, s'ils sont définis surtrue
, ils auront l'air désactivés (grâce au bootstrap) et ne se déclencheront pas lorsque vous cliquez dessus.Les ancres ne prennent pas en charge la propriété désactivé, nous allons donc compter sur la
.disabled
classe pour les rendre désactivées (grâce au bootstrap à nouveau) et connecter un événement de clic par défaut qui empêche le clic en renvoyant false (pas besoin depreventDefault
voir ici ) .Remarque : vous n'avez pas besoin de décrocher cet événement lors de la réactivation des ancres. Il suffit de supprimer la
.disabled
classe.Bien sûr, cela n'aide pas si vous avez attaché un gestionnaire de clics personnalisé au lien, ce qui est très courant lors de l'utilisation de bootstrap et de jQuery. Donc, pour faire face à cela, nous allons utiliser l'
isDisabled()
extension pour tester la.disabled
classe, comme ceci:J'espère que cela aide à simplifier un peu les choses.
la source
Notez qu'il y a un problème étrange si vous utilisez les boutons JS de Bootstrap et l'état de «chargement». Je ne sais pas pourquoi cela se produit, mais voici comment y remédier.
Disons que vous avez un bouton et que vous le placez dans l'état de chargement:
Vous voulez maintenant le retirer de l'état de chargement, mais également le désactiver (par exemple, le bouton était un bouton Enregistrer, l'état de chargement indiquait une validation en cours et la validation a échoué). Cela ressemble à Bootstrap JS raisonnable:
Malheureusement, cela réinitialisera le bouton, mais ne le désactivera pas. Apparemment,
button()
effectue une tâche retardée. Vous devrez donc également reporter votre désactivation:Un peu ennuyeux, mais c'est un modèle que j'utilise beaucoup.
la source
Excellente réponse et contributions de tous! J'ai dû étendre légèrement cette fonction pour inclure la désactivation des éléments sélectionnés:
Je semble travailler pour moi. Merci a tous!
la source
Pour ce genre de comportement, j'utilise toujours le
button
widget jQueryUI , je l'utilise pour les liens et les boutons.Définissez la balise dans HTML:
Utilisez jQuery pour initialiser les boutons:
Utilisez les
button
méthodes du widget pour les désactiver / les activer:Cela prendra en charge le comportement du bouton et du curseur, mais si vous devez approfondir et modifier le style du bouton lorsqu'il est désactivé, remplacez les classes CSS suivantes dans votre fichier de style CSS de page.
Mais rappelez-vous: ces classes CSS (si elles sont modifiées) changeront également le style des autres widgets.
la source
Ce qui suit a très bien fonctionné pour moi:
la source
C'est une réponse assez tardive, mais je suis tombé sur cette question en cherchant un moyen de désactiver les boutons boostrap après avoir cliqué dessus et peut-être ajouter un bel effet (par exemple un spinner). J'ai trouvé une excellente bibliothèque qui fait exactement cela:
http://msurguy.github.io/ladda-bootstrap/
Vous venez d'inclure les css et js requis, ajoutez des propriétés à vos boutons et activez lada avec javascript ... Presto! Vos boutons ont une nouvelle vie (veuillez vérifier la démo pour voir à quel point c'est beau)!
la source
Cela ne fonctionne pas parce que parfois
ajustez votre code avec
la source
Je sais que ma réponse est en retard, mais OMI, c'est le moyen le plus simple de basculer un bouton «activer» et un bouton «désactiver»
la source
Supposons que vous ayez ces boutons sur la page comme:
Le code js:
la source
Supposons que vous en ayez un qui soit actuellement activé.
Ajoutez simplement ceci:
et vous obtiendrez ce qui désactivera le bouton
la source
disabled
propriété n'est pas une propriété valide pour les balises d'ancrage.Si vous souhaitez désactiver le cliquable, vous pouvez également l'ajouter en ligne en html
la source