Est un Modal Boîte de confirmation à l'Aide de JQuery Possible?
Regarda autour de un peu, et n'arrive pas à trouver un JQuery solution (peut-être que c'est juste une limitation de JavaScript) pour cela:
<a href="somelink.php"
onclick="return confirm('Go to somelink.php?');">Click Here</a>
Dans l'exemple ci-dessus, lorsqu'un utilisateur clique sur le lien, il ne va pas à ses href si l'utilisateur clique sur OK dans la boîte de confirmation.
Ce que j'essaie de faire est d'obtenir un look plus moderne à l'aide d'un popup div. Peut-être quelque chose comme ceci:
<a href="somelink.php"
onclick="return jq_confirm('Go to somelink.php?');">Click Here</a>
(Où jq_confirm est une coutume JQuery confirmer fonction qui affiche une belle div avec une réponse OUI/NON ou OK/CANCEL paire).
Cependant, je n'arrive pas à trouver une telle chose.
J'ai regardé quelques widget JQuery bibliothèques, etc, qui offrent des fonctionnalités similaires, mais aucun n'arrivera à attendre la réponse de l'utilisateur (au moins, pas dans le scénario décrit ci-dessus), mais au lieu de cela ils ont juste continuer et prendre l'utilisateur pour le lien (ou d'exécuter un JavaScript intégré dans le href=" morceau du lien). Je suppose que c'est parce que tandis que vous pouvez attacher à une fonction de rappel pour plusieurs de ces widgets pour retourner une valeur vrai/faux, le onclick événement n'a pas à attendre une réponse (rappels sont asynchrones), ainsi à l'encontre de l'objectif de la boîte de confirmation.
Ce dont j'ai besoin est le même genre de halte-tous-javascript (modal) fonctionnalité par défaut confirmer() commande offre. Est-ce possible dans JQuery (ou même en JavaScript)?
Que je ne suis pas un expert en JavaScript, ni en JQuery, je reporte à vous les gourous de là-bas. Tout JQuery (ou même pur JavaScript) la solution est la bienvenue (si possible).
Grâce -
- J'ai le similer question..! va attendre quelqu'un pour répondre à votre question..!
Vous devez vous connecter pour publier un commentaire.
J'ai juste eu à résoudre le même problème. Je me suis retrouvé à l'aide de la
boîte de dialogue
widget de JQuery UI. J'ai été en mesure de mettre en œuvre sans l'aide de rappels avec l'avertissement que lesdialog
doivent être partiellement initialisé dans leclick
gestionnaire d'événement pour le lien que vous voulez utiliser la confirmation avec la fonctionnalité (si vous souhaitez utiliser ce pour plus d'un lien). C'est parce que l'URL cible du lien doit être injecté dans le gestionnaire d'événement pour la confirmation de clic de bouton.Voici ma solution, disparaît à être adapté pour un exemple. J'utilise une classe CSS pour indiquer les liens doivent avoir la confirmation de comportement.
Découvrez http://www.84bytes.com/2008/06/02/jquery-modal-dialog-boxes/
Ils ont une bonne variété de modal-boîtes pour JQuery.
Je pense que vous devriez voir http://www.ericmmartin.com/simplemodal/
Avez-vous vu le jQuery boîte de Dialogue Modale sur jQuery UI site?
confirm()
. Depuis le style est un navigateur spécifique, l'OP aura besoin de recourir à un script côté client de la mise en œuvre d'une boîte de dialogue, qui est ce que je recommande. Comment n'est-ce pas résoudre la confirmation de problème?J'ai blogué au sujet de la solution à ce problème ici: http://markmintoff.com/2011/03/asp-net-jquery-confirm-dialog/
Même si l'article est orientée vers l'ASP.Net il peut être facilement adapté à php. Il s'appuie sur la prévention de la sur avec un return false et lorsque l'utilisateur clique sur "OK" ou "OUI" ou quoi, avez-vous; le lien ou le bouton est tout simplement cliqué de nouveau.
Lui donner un essai et laissez-moi savoir ce que vous en pensez. J'espère que cela résout votre problème.
Vous devriez être en mesure de remplacer la fenêtre standard.confirmer la fonction écrire le code suivant.
ensuite, vous aurez besoin de faire une fonction comme ceci
Cela devrait fonctionner, bien que je n'ai pas encore testé. Je vais faire exactement ce droit maintenant et laissez-vous savez tous comment ça a fonctionné.
Edit:
J'ai testé mon exemple ci-dessus maintenant, et il n'était pas possible, vous aurez à passer dans une fonction de rappel à votre écrasé de confirmer la fonction comme ceci:
..faire de votre appel à la fonction ressembler à ceci:
En d'autres termes, il n'est pas possible de remplacer la fenêtre par défaut.confirmer la fonction sans provoquer une boucle méchant qui provoque le navigateur pour les bloquer. Je pense que vous devez modifier votre confirmer appels, comme ci-dessus.
Depuis que cette question semble être à côté de la réponse canonique: il n'y a aucun moyen d'en programmant pause (et curriculum vitae) d'exécution de javascript, comme
alert
ouconfirm
ne.Cela étant dit, en s'appuyant sur ce comportement est généralement considéré comme une mauvaise pratique compte tenu de la mono-thread nature de javascript, et la raison pour laquelle les fonctions mentionnées ci-dessus ne permet de suspendre l'exécution est probablement parce qu'ils ont été conçus à une époque où le web était encore à un stade très précoce, et, plus tard, reste inchangé pour assurer la compatibilité. Puisque le but aujourd'hui est dans l'écriture que beaucoup de non-blocage du code js que possible, il est peu probable que la fonctionnalité de programmation pour stopper le js va jamais le faire à l'avenir toute spécification ECMAScript, alors votre meilleur pari est de retravailler votre site assurez-vous de confirmer et d'alerte des boîtes de dialogue peuvent co-exister avec d'autres code javascript s'exécutant en arrière-plan.
Mon moyen de contourner ce problème est d'ajouter quelques données arbitraires à l'objet, et de vérifier que les données sur cliquez sur. Si elle existait, procéder à la fonction comme normal, sinon confirmer avec oui/non (dans mon cas, à l'aide d'un jqtools de superposition). Si l'utilisateur clique sur oui - insérer les données dans l'objet, de simuler un autre et cliquez sur effacer les données. S'ils cliquent pas, il suffit de fermer la superposition.
Voici mon exemple:
Et c'est ce que j'ai fait pour remplacer le confirmer fonction (à l'aide d'un des outils de jquery overlay):
J'ai une solution qui peut être utilisée pour remplacer la fenêtre par défaut.confirmer la fonction. Il n'exige pas de vous prépondérant de la fenêtre.confirmer que ce n'est pas entièrement possible.
Ma solution vous permet d'avoir une classe générale comme moi, disons que "confirmer l'action" que vous pouvez placer sur n'importe quel élément qui nécessite une confirmation avant d'être traités. Le script est très simple et utilise jQuery, jQuery UI Dialog et pas d'autres plugins.
Vous pouvez trouver la démo complète de la mise en œuvre sur jsFiddle, http://jsfiddle.net/74NDD/39/.
Utilisation:
Ajouter ce code javascript dans le html de la tête ou devant toute autre clic
la liaison que vous avez dans votre javascript.
Placez ce code html quelque part dans le corps (il est caché par défaut).
De mettre la classe "confirmer l'action" sur n'importe quel élément qui nécessite une confirmation.
Cette solution fonctionne parfaitement car il ne modifie pas jQuery remontée d'événements, il n'arrête tous les autres événements jusqu'à ce que l'utilisateur décide de ce qu'ils veulent faire.
J'espère que cela est utile pour quelqu'un d'autre comme je l'ai été incapable de trouver une autre solution qui ne nécessite pas m'en installer un autre plugin jQuery ou faire d'autres hack.
De construction sur le dessus de Banu la solution (merci une tonne!) pour faire une pop de la solution sur le haut de chaque page. Collez ce code à l'intérieur:
Et d'ajouter "confirmLinkFollow" classe pour tous les liens que vous voulez confirmé:
Mettre la redirection à l'intérieur de la fonction comme:
Et de l'appeler comme ceci:
Près de trois ans plus tard, je suis à la recherche de quelque chose de similaire. Depuis je n'ai pas trouvé acceptable "rapide" de la solution, j'ai écrit quelque chose qui vient de très près les critères de l'OP. Je l'ai trouver d'autres peuvent trouver utile dans l'avenir.
JavaScript est piloté par les événements et qui signifie qu'il ne prend pas en charge toute sorte de "wait" ou "veille" de la boucle que l'on peut utiliser pour mettre en pause un pur javascript confirmer la fonction. Les options de gravure de cycles de processeur, à l'aide d'un plugin de navigateur, ou AJAX. De plus en plus mobile du monde, et avec parfois inégale des connexions internet, aucune de ces solutions. Cela signifie que nous sommes de retour de notre "confirmer" fonction immédiatement.
Cependant, puisqu'il n'est pas "faux" de la logique dans l'extrait de code ci-dessus (ie. rien n'est fait lorsque l'utilisateur clique sur "Annuler"), on peut déclencher le "clic" ou "soumettre" en cas de nouveau lorsque l'utilisateur clique sur "OK". Pourquoi ne pas mettre un drapeau et de réagir en fonction de cet indicateur au sein de notre "confirmer" de la fonction?
Pour ma solution, j'ai opté pour l'utilisation de FastConfirm plutôt que d'un "modal" boîte de dialogue. Vous pouvez facilement modifier le code pour utiliser tout ce que vous voulez, mais mon exemple a été conçu pour utiliser ceci:
https://github.com/pjparra/Fast-Confirm
En raison de la nature de ce qu'il fait, je ne vois pas un moyen propre à tout. Si vous sentez que c'est trop d'aspérités, n'hésitez pas à lisser les ou de réécrire votre code de la façon que tout le monde a recommandé:
Donc... onclick="return confirm('voulez-vous tester ce?');" allait devenir onclick="return jq_confirm(this, 'voulez-vous tester ce?');" Le pos/"droite" paramètre est facultatif et est spécifiquement pour les Fast-Confirmer.
Lorsque vous cliquez sur, le jq_confirm() va lancer le jQuery boîte de dialogue et revenir "false". Lorsque l'utilisateur clique sur "OK" puis jq_confirm() définit un indicateur, les appels de l'original de la souris (ou envoyer) événement, renvoie la valeur "true", alors unsets le drapeau dans le cas où vous voulez rester sur la même page.
Le lien suivant est un plugin jQuery pour confirmer des boîtes semblables à la construction comme à confirmer("quelque chose") en JavaScript
http://labs.abeautifulsite.net/archived/jquery-alerts/demo/