2010-11-27 9 views
11

Je souhaite ajouter une boîte de dialogue de confirmation à un bouton de suppression pour demander à l'utilisateur s'il est correct ou non de supprimer l'élément sélectionné.Boîte de dialogue de confirmation Javascript

Sinon, rien ne devrait happend, le reste doit être exécuté une URL.

Je sais comment réaliser cela via un code javascript mais je suis à la recherche d'une solution qui a moins de code. Je veux dire par exemple :

<a href="mysite.de/xy/delete" onClick="...">Delete</a> 

Est-il possible de mettre la fonctionnalité tout dans l'élément onClick sans avoir un peu de javascript supplémentaire dans l'en-tête?

+0

n'est pas expert en javascript. Cependant, ne serait-il pas possible d'écrire une fonction appelée onClick? – starcorn

Répondre

18

Mieux (mais loin d'être idéal!): Retournez-le. Ne laissez pas le lien faire quoi que ce soit, sauf si vous avez JavaScript:

<a href="#" 
    onclick="if confirm('Sure?') { window.location='http://mysite.de/xy/delete';}"> 
    Click to delete 
</a> 

Cela empêche au moins le lien de fonctionner sans JavaScript. Cela réduit également le risque que le lien soit accidentellement exploré par Google, ou même par un plugin local. (Image si vous aviez un plugin qui tenterait de charger/afficher sous forme de vignette) la page cible sur le vol stationnaire d'un lien!)

encore, cette solution n'est pas idéale. Vous allez réellement naviguer vers l'URL, et l'URL peut apparaître dans l'histoire à cause de cela. Vous pouvez effectivement supprimer Bob, créer un nouveau Bob, puis supprimer celui-ci par accident en cliquant simplement sur 'retour' dans le navigateur!

Une meilleure option serait d'utiliser JavaScript ou un formulaire pour publier l'action souhaitée. Vous pouvez faire une demande au serveur avec la méthode POST, ou mieux, la méthode DELETE. Cela devrait également empêcher les URL d'être indexées.

+0

D'accord, c'est un peu mieux. Il y a des risques potentiels associés à la page apparaissant dans l'historique du navigateur par exemple. – cspolton

+0

J'utilise php pour imprimer le lien, une idée de pourquoi cela ne fonctionne pas?: Echo ' '; –

27

Vous pouvez return la confirm() (qui retourne true/false), comme ceci:

<a href="mysite.de/xy/delete" onClick="return confirm('You sure??');">Delete</a> 

You can test it here

+1

Techniquement, cela fonctionnera, mais je ne peux toujours pas recommander de cette façon, car ce n'est pas la meilleure pratique. Les actions devraient vraiment être postées sur le serveur. – cspolton

+0

Je penserais 'DELETE' plutôt que' GET' ou 'POST' ... – wprl

5

Tenir compte ce qui se passe si l'utilisateur a désactivé JavaScript ou si Google arrive et les araignées les lien. Votre entité sera-t-elle supprimée?

Une meilleure façon serait d'afficher une forme à supprimer.

+0

Je ne pense pas que ce lien de suppression est public, il ne devrait donc pas y avoir de problème.Je – jwueller

+0

besoin de la fonctionnalité pour un service de back-end où le javascript doit être activé –

+2

Cela suppose qu'il n'y a pas d'autre sécurité en place ... mais je suis d'accord POST doit être utilisé pour les actions. –

2

Il y a un plugin jQuery qui fait exactement cela: jquery.confirm.

Exemple:

<a href="home" class="confirm">Go to home</a> 

Code JS:

$('.confirm').confirm(); 

screenshot

Si l'utilisateur confirme, il est redirigé vers le lien du <a>, rien d'autre ne se passe.

Questions connexes