2017-07-13 8 views
0

J'essaie de faire en sorte que si un utilisateur apporte des modifications à une page, puis essaie de quitter la page sans sauvegarder, un message apparaîtra avec un "OK" "bouton (pas de bouton" Annuler "). Cliquez sur le bouton "OK" pour fermer le message. L'utilisateur doit cliquer sur le bouton "Enregistrer" ou il continuera à recevoir le message, lui interdisant de quitter la page jusqu'à ce que le bouton "Enregistrer" soit cliqué. En quittant la page, je veux dire les empêcher de naviguer vers un autre onglet ou élément de menu dans le site ... s'ils cliquent sur un autre lien sur la page, cela leur donnerait le popup. Ils peuvent quitter leur site à tout moment.Créer confirmation JavaScript lorsque les utilisateurs essaient de quitter la page sans enregistrer

Je pense avoir besoin d'un dialogue modal JavaScript pour me débarrasser du bouton Annuler mais je suis un peu incertain de l'implémentation.

Actuellement, j'utilise r = confirm (voir ci-dessous) mais il a le bouton d'annulation plus il donne l'option aux utilisateurs de quitter la page s'ils cliquent sur "OK". Je ne veux pas qu'ils soient en mesure de quitter la page sans cliquer sur le bouton "Enregistrer" ou ils devraient fermer toute la fenêtre.

Toute aide/explication est très appréciée car je suis très nouveau à ce sujet. Je vous remercie.

if (typeof unsaved != 'undefined') { 
if (unsaved == true) { 
var r = confirm("Please click Update. Unsaved changes will be lost."); 
if (r == false) { 
    saveNeeded = "true"; 
    } 
    else { saveNeeded = "false"; } 
} 
} 
+1

onbeforeunload et il n'y a aucun moyen de les empêcher .... – epascarello

Répondre

0

Jetez un coup d'œil à onBeforeUnload.

Vous ne serez pas en mesure de forcer un utilisateur à rester sur le site, mais il fournira une fenêtre pop-up avec les boutons «Leave» et «Stay» quand ils tentent de fermer la fenêtre. Tous les navigateurs Web principaux permettent à l'utilisateur de laisser n'importe quelle page Web à volonté, et le plus que vous pouvez faire est de les avertir. OnBeforeUnload est probablement la meilleure solution multi-navigateur que vous aurez pour donner aux utilisateurs la chance de rester sur le site et d'enregistrer leurs modifications avant de partir.

<script language="JavaScript"> 
    window.onbeforeunload = confirmExit; 
    function confirmExit() { 
     return "Please click Update. Unsaved changes will be lost."; 
    } 
</script> 

Il serait très mauvaise pratique pour tenter de verrouiller un utilisateur à votre site Web sans option de départ, ce qui explique pourquoi il est pas pris en charge par tous les navigateurs Web principaux. S'il est si important que vous DEVEZ forcer l'utilisateur à faire quelque chose (et que vous avez le droit de le faire en tant que société ou autre), vous devez utiliser une autre plateforme ou écrire un plugin personnalisé dans le navigateur Web de l'utilisateur. Mais pour une utilisation générale, vous ne pouvez pas verrouiller leur navigateur.

+0

Nous vous remercions de votre réponse et du lien pour plus d'informations. Les utilisateurs peuvent quitter la page s'ils cliquent sur Enregistrer. Je n'essaie pas de les garder sur le site, essayant juste de s'assurer qu'ils sauvegardent leurs changements. Les données peuvent être supprimées, donc si elles veulent sortir de la boucle tout ce qu'elles ont à faire est de cliquer sur Enregistrer. – TechEng

+0

Merci d'avoir ajouté plus de clarté @TechEng. Malheureusement, vous ne pourrez toujours pas ajouter cette fonctionnalité, en particulier pour une solution multi-navigateur. Une solution qui peut fonctionner pour vous est d'enregistrer automatiquement, et l'avertissement, au moment où ils sont sur le point de partir, peut les avertir qu'ils seront automatiquement sauvegardés à moins qu'ils n'enregistrent manuellement ou écarte leurs changements (boutons sur la page Web). Cela peut être un moyen de faire en sorte que l'avertissement fonctionne mieux pour votre application. –

+0

votre aide est grandement appréciée, merci. @ MarkR – TechEng