J'essaye d'utiliser la boîte de dialogue JQuery UI pour remplacer la javascript:alert()
boîte laide . Dans mon scénario, j'ai une liste d'éléments, et à côté de chacun d'entre eux, j'aurais un bouton «supprimer» pour chacun d'eux. la configuration html psuedo sera quelque chose qui suit:
<ul>
<li>ITEM <a href="url/to/remove"> <span>$itemId</span>
<li>ITEM <a href="url/to/remove"><span>$itemId</span>
<li>ITEM <a href="url/to/remove"><span>$itemId</span>
</ul>
<div id="confirmDialog">Are you sure?</div>
Dans la partie JQ, sur le document prêt, je configurerais d'abord le div pour être une boîte de dialogue modale avec le bouton nécessaire, et définirais ces "a" pour qu'ils se déclenchent en confirmation avant de supprimer, comme:
$("ul li a").click(function() {
// Show the dialog
return false; // to prevent the browser actually following the links!
}
OK, voici le problème. pendant le temps d'initialisation, la boîte de dialogue n'aura aucune idée de qui (l'élément) le déclenchera, ni de l'identifiant de l'élément (!). Comment puis-je configurer le comportement de ces boutons de confirmation afin que, si l'utilisateur choisit toujours OUI, il suivra le lien pour le supprimer?
Réponses:
Je devais juste résoudre le même problème. La clé pour que cela fonctionne était que le
dialog
doit être partiellement initialisé dans leclick
gestionnaire d'événements pour le lien avec lequel vous souhaitez utiliser la fonctionnalité de confirmation (si vous souhaitez l'utiliser pour plus d'un lien). En effet, l'URL cible du lien doit être injectée dans le gestionnaire d'événements pour le clic du bouton de confirmation. J'ai utilisé une classe CSS pour indiquer quels liens devraient avoir le comportement de confirmation.Voici ma solution, abstraite pour convenir à un exemple.
Je crois que cela fonctionnerait pour vous, si vous pouvez générer vos liens avec la classe CSS (
confirmLink
, dans mon exemple).Voici un jsfiddle avec le code dedans.
Dans l'intérêt d'une divulgation complète, je noterai que j'ai passé quelques minutes sur ce problème particulier et que j'ai fourni une réponse similaire à cette question , qui était également sans réponse acceptée à l'époque.
la source
J'ai trouvé que la réponse de Paul ne fonctionnait pas tout à fait car la façon dont il définissait les options APRÈS que la boîte de dialogue ait été instanciée sur l'événement de clic était incorrecte. Voici mon code qui fonctionnait. Je ne l'ai pas adapté pour correspondre à l'exemple de Paul, mais ce n'est que la différence d'un chat en ce que certains éléments sont nommés différemment. Vous devriez pouvoir y arriver. La correction se trouve dans le paramètre de l'option de dialogue pour les boutons sur l'événement de clic.
J'espère que cela aide quelqu'un d'autre, car ce message m'a à l'origine mis sur la bonne voie, je pensais que je ferais mieux de publier la correction.
la source
on
place declick
, car cela continuera à fonctionner si (par exemple) le champ est redessiné à l'aide de jQuery - api.jquery.com/onJ'ai créé ma propre fonction pour une boîte de dialogue de confirmation jquery ui. Voici le code
Maintenant, pour utiliser ceci dans votre code, écrivez simplement ce qui suit
Continue.
la source
Solution simple et courte que je viens d'essayer et cela fonctionne
puis ajoutez simplement le class = "confirm" à votre lien et cela fonctionne!
la source
C'est ma solution .. j'espère que cela aide n'importe qui. Il est écrit à la volée au lieu d'être copypasté, alors pardonnez-moi toute erreur.
Personnellement je préfère cette solution :)
edit: Désolé .. je devrais vraiment l'expliquer plus en détail. Je l'aime car à mon avis, c'est une solution élégante. Lorsque l'utilisateur clique sur le bouton qui doit être confirmé en premier, l'événement est annulé comme il se doit. Lorsque le bouton de confirmation est cliqué, la solution n'est pas de simuler un clic de lien mais de déclencher le même événement jquery natif (clic) sur le bouton d'origine qui se serait déclenché s'il n'y avait pas de dialogue de confirmation. La seule différence étant un espace de noms d'événement différent (dans ce cas «confirmé») de sorte que la boîte de dialogue de confirmation ne s'affiche plus. Le mécanisme natif de Jquery peut alors prendre le relais et les choses peuvent fonctionner comme prévu. Un autre avantage étant qu'il peut être utilisé pour les boutons et les hyperliens. J'espère avoir été assez clair.
la source
$("#btn").trigger("click.confirmed");
Je sais que c'est une vieille question mais voici ma solution utilisant les attributs de données HTML5 dans MVC4:
Code JS:
la source
Ça fera l'affraire?
la source
Comme ci-dessus. Les messages précédents m'ont mis sur la bonne voie. Voilà comment je l'ai fait. L'idée est d'avoir une image à côté de chaque ligne de la table (générée par un script PHP à partir de la base de données). Lorsqu'un utilisateur clique sur une image, l'utilisateur est redirigé vers l'URL et, par conséquent, l'enregistrement approprié est supprimé de la base de données tout en affichant certaines données liées à l'enregistrement cliqué dans la boîte de dialogue de l'interface utilisateur jQuery.
Le code JavaScript:
Boîte de dialogue div:
Lien image:
De cette façon, vous pouvez passer les valeurs de la boucle PHP dans la boîte de dialogue. Le seul inconvénient est d'utiliser la méthode GET pour effectuer réellement l'action.
la source
Que dis-tu de ça:
Je l'ai testé à ce html:
Il supprime tout l'élément li, vous pouvez l'adapter à vos besoins.
la source
(Depuis le 22/03/2016, le téléchargement sur la page liée à ne fonctionne pas. Je laisse le lien ici au cas où le développeur le corrige à un moment donné parce que c'est un super petit plugin. Le message original suit. Un alternative, et un lien qui fonctionne réellement: jquery.confirm .)
C'est peut-être trop simple pour vos besoins, mais vous pouvez essayer ce plugin de confirmation jQuery . C'est vraiment simple à utiliser et fait le travail dans de nombreux cas.
la source
Même si je déteste utiliser eval, cela m'a semblé être le moyen le plus simple, sans causer beaucoup de problèmes selon les circonstances. Similaire à la fonction javascript settimeout.
la source
Je suis tombé sur cela moi-même et je me suis retrouvé avec une solution, qui est similaire à plusieurs réponses ici, mais implémentée légèrement différemment. Je n'aimais pas beaucoup de morceaux de javascript, ou un espace réservé div quelque part. Je voulais une solution généralisée, qui pourrait ensuite être utilisée en HTML sans ajouter de javascript à chaque utilisation. Voici ce que j'ai proposé (cela nécessite jquery ui):
Javascript:
Et puis en HTML, aucun appel ou référence javascript n'est nécessaire:
Étant donné que l'attribut title est utilisé pour le contenu div, l'utilisateur peut même obtenir la question de confirmation en survolant le bouton (c'est pourquoi je n'ai pas utilisé l'attribut title pour la vignette). Le titre de la fenêtre de confirmation est le contenu de la balise alt. Le snip javascript peut être inclus dans un include généralisé .js, et simplement en appliquant une classe, vous avez une jolie fenêtre de confirmation.
la source
la source
REMARQUE: pas assez de représentants pour commenter, mais la réponse de BineG fonctionne parfaitement pour résoudre les problèmes de publication avec les pages ASPX comme souligné par Homer et écho. En l'honneur, voici une variante utilisant un dialogue dynamique.
la source
Une autre variante de ce qui précède où il vérifie si le contrôle est soit un 'asp: linkbutton' ou 'asp: button' qui est rendu comme deux contrôles html différents. Cela semble fonctionner très bien pour moi, mais je ne l'ai pas testé de manière approfondie.
la source
Je cherchais ceci à utiliser sur des boutons de lien dans un Gridview ASP.NET (contrôle GridView construit dans les commandes) Ainsi, l'action "Confirmer" dans la boîte de dialogue doit activer un script généré par le contrôle Gridview au moment de l'exécution. cela a fonctionné pour moi:
la source
var inlineFunction = $(this).attr("href") + ";"; /* ... */ eval(inlineFunction);
cela n'a aucun sens!Je sais que cette question est ancienne mais c'était la première fois que je devais utiliser une boîte de dialogue de confirmation. Je pense que c'est le moyen le plus court de le faire.
J'espère que tu aimes :)
la source
Personnellement, je vois cela comme une exigence récurrente dans de nombreuses vues de nombreuses applications ASP.Net MVC.
C'est pourquoi j'ai défini une classe de modèle et une vue partielle:
Et ma vision partielle:
Et puis, chaque fois que vous en avez besoin dans une vue, il vous suffit d'utiliser @ Html.Partial (dans les scripts de section pour que JQuery soit défini):
L'astuce consiste à spécifier le JQueryClickSelector qui correspondra aux éléments qui nécessitent une boîte de dialogue de confirmation. Dans mon cas, toutes les ancres avec la classe SyLinkDelete mais cela pourrait être un identifiant, une classe différente etc. Pour moi c'était une liste de:
la source
Sujet très populaire et Google le trouve pour la requête "jquery dialog close which event was clicked". Ma solution gère correctement les événements OUI, NON, ESC_KEY, X. Je veux que ma fonction de rappel soit appelée quelle que soit la manière dont le dialogue a été supprimé.
Il est facile de rediriger le navigateur vers une nouvelle URL ou d'effectuer autre chose sur la fonction retval.
la source
Autant de bonnes réponses ici;) Voici ma démarche. Utilisation similaire à eval ().
Et l'utilisation ressemble à:
la source
L'interface utilisateur JQuery prête à l'emploi offre cette solution:
HTML
Vous pouvez personnaliser davantage cela en fournissant un nom pour la fonction JQuery et en transmettant le texte / titre que vous souhaitez afficher en tant que paramètre.
Référence: https://jqueryui.com/dialog/#modal-confirmation
la source
Eh bien, c'est la réponse à vos questions ...
assurez-vous d'avoir jquery 1.4.4 et jquery.ui
la source
LANGUAGE="JavaScript"
), utilisez des caractères majuscules et minuscules mélangés, vous mélangez des codes JS simples avec des codes jQuery totalement inutilement, et vous définissez des styles avec JS au lieu de CSS (moche et sémantiquement incorrect), et, en passant, votre style la modification (avec JS simple) n'a absolument aucune importance en ce qui concerne la question d'origine. Vous devez absolument raccourcir et embellir votre code et vous concentrer sur la réponse à la question initiale.Un moyen facile avec une touche de javascript
la source