IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Alert/Confirm Customisés


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de ashurai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 144
    Points : 115
    Points
    115
    Par défaut Alert/Confirm Customisés
    Bonjour à tous,

    J'essaie de personnalisé les alert et confirm de base javascript.
    J'ai déja été orienté un 1ere fois sur ce site :
    http://slayeroffice.com/code/custom_alert/

    qui m'a permis de répondre presque totalement à mon besoin, il ne manque plus qu'une chose, et mes recherche restent vaine...
    Le problème, c'est que le fait de remplacer l'utilisation du alert de base par la fonction ainsi présentée sur le site n'est pas "bloquant", je m'explique :
    Si je veux valider un formulaire alors qu'un champ obligatoire n'est pas renseigné, l'alert "perso" s'affiche (à l'endroit ou je le veux) mais comme je veux mettre le champ en focus, cela se fait aussitot, sans attendre d'avoir cliqué sur le "OK"...

    Encore plus dur, pour les confirm... Je dois attendre une réponse "oui" ou "non"...

    J'ai éssayer de faire "attendre" le script j'usqu'a une réponse avec une fonction wait() perso... mais ca change rien.

    Y a t'il un expert javascript matinal ?

    Merci d'avance...

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    j'ai pas été voir le site mais le principe doit être un div dont on modifie le display ou le visibility...

    pour le rendre bloccant, il faut rajouter un div qui pernd toute la hauteur et la largeur de la page et le mettre en z-index intermédiaire entre la page et l'alert perso

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="masque" style="width:100%;height:100%;position:absolute;top:0;left:0;display:none;" onmousedown="alert('alors c\'est oui ou c'est non ?');return false;">

    tu bascules le display en block et tu le donne un bon z-index...
    en principe il prendras les clicks indésirables ...

  3. #3
    Membre régulier Avatar de ashurai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 144
    Points : 115
    Points
    115
    Par défaut
    Tu veux dire que je dois encadre le div de mon alert par celui que tu m'as donné ?

    Parcequ'en fait j'utilise la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if(document.getElementById) 
    {
    	window.alert = function(txt)
      {
    		createCustomAlert(txt);
    	}
    }
    Donc, dés que je fais un alert, j'utilise à la place l'alert custom, et du coup ce n'est pas le div dont tu me parles qui est l'origine du alert (sur l'evenement onmousedown).

    En fait, je ne vois pas trop ou je dois poser ce div pour que ca marche

    Désolé si j'ai trop de mal ..

  4. #4
    Membre régulier Avatar de ashurai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 144
    Points : 115
    Points
    115
    Par défaut
    Pour l'instant j'ai placé mon ce div avec un display "none" dans ma page, je met son display a "block" juste avant l'affichage de mon alert custom... Et ce n'est point bloquant ..

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    au moment ou tu affiche le div de l'alert customisé ...
    a condition que ce soit sur le pricipe de div et non de popup !!!
    et en attribuant un z-index de façon a avoir en couches successives:
    - le contenu de la page
    - le masque
    - le div d'alert (si c'est bien un div!!!)

    ce système fonctionne et j'en veux pour preuve que je l'utilise !

  6. #6
    Membre régulier Avatar de ashurai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 144
    Points : 115
    Points
    115
    Par défaut
    En fait je viens de me rendre compte que ce que tu dit de faire etait en fait déja fait...

    Voila ce que j'ai dans ma feuille de style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #modalContainer 
    {
    	position:absolute;
    	width:100%;
    	height:100%;
    	top:0px;
    	left:0px;
    	z-index:10000;
    }
     
    #alertBox 
    {
    	position:relative;
    	width:300px;
    	min-height:100px;
    	margin-top:50px;
    	border:2px solid #000;
    	background-color:#F2F5F6;
    	background-position:20px 30px;
    	visiblity:hidden;
    	z-index:20000;
    }
    Mon modal container est ajouté au body au moment de l'alert, et mon alertBox est ajouté au modalContainer, j'ai donc bien l'architecture demandée. Je ne peux cliquer nul par ailleur que sur mon alert, mais ca n'a pas bloqué l'execution du script parent, le focus se fait sans attendre le clic sur "OK"...

    En tous cas, vraiment merci de passer du temps la dessus pour moi, c'est cool.

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    blcker l'execution du script ....

    heu oui mais quel script et bloquer où ???

  8. #8
    Membre régulier Avatar de ashurai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 144
    Points : 115
    Points
    115
    Par défaut
    Désolé si je suis pas trés clair, en fait, j'ai un formulaire à valider, sur le clic du bouton valider, j'utilise cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function valider()
    {
      if(document.getElementById('monChampObligatoire').value=='')
      {
         alert('champ obligatoire');
         document.getElementById('monChampObligatoire').focus();
      }
    }
     
    Mon alert() est remplacé par mon div "custom", et mon focus n'attend pas le clic sur le bouton "ok" du div...
     
    Et j'ai donc un probleme encore plus grand avec les confirm()...

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    heu j'avoue ne pas te suivre ...
    le alert('champs obligatoire') est remplacé par ton alert perso et tu veux attendre que l'utilsateur clique sur ton message d'alert perso avant de continuer le script et passer le focus ???

    si c'est le cas un setInterval s'impose ...

  10. #10
    Membre régulier Avatar de ashurai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 144
    Points : 115
    Points
    115
    Par défaut
    Oui c'est ca !
    Ca y est on s'est compris.

    En fait, j'avais déja utilisé ce genre de solution, mais j'avais à chaque découpé en plusieur scripts le script "parent".

    Le probleme ici, c'est que l'appli en question est déja toute faite, et je ne voudrais pas me refaire tous les scripts !
    C'est pourquoi un remplacement général des alert et confirm serait pas mal.

    Je vais voir si un setInterval peux m'aider(je ne connais pas ...)

  11. #11
    Membre régulier Avatar de ashurai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 144
    Points : 115
    Points
    115
    Par défaut
    Bon... le setInterval() ne va pas m'etre d'une grande aide... Ca ne bloque pas le script parent.

    Je crois que ca va pas être possible... Je vais devoir reprendre tous les script (pas cool..)

    En tous cas merci pour ton aide

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    tu testes un flag boolean global dans le setInterval et la en focntion du test sur ton boolean tu lances ou non la seconde fonction ...
    alors toujours pas utile le setInterval ?.

  13. #13
    Membre régulier Avatar de ashurai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 144
    Points : 115
    Points
    115
    Par défaut
    Si, mais ca m'oblige a créer une seconde fonction, dans laquelle l'action entrepris va dépendre du contexte, il va donc falloir que je le détermine pour chaque script ..

    Pour mon exemple, je devrais passer en paramêtre de la fonction le champs à mettre en focus, et donc retirer la ligne de ma fonction "valider()", et faire cela pour chaque script ayant un alert ou un confirm...

    Pour mes confirm, les script sont du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if(confirm('supprimer'))
    {
        [Action de suppression]
    }
    else
    {
        [Rien du tout]
    }
    je vais devoir faire juste afficher mon div avec ma fonction, et mettre mon action de suppression dans un script se lancant sur le clic du bonton "oui"...

    Du coup, le fait d'utiliser le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    window.confirm = function(txt) 
    { 
       createCustomConfirm(txt); 
    }
    ne sert plus à rien, car je dois connaitre l'action à entreprendre sur le "oui"...

    Bref... Je vais pas écrire un roman.. J'aurais ésperer que ce soit jouable autrement.

    Merci bien pour tes conseils

  14. #14
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    peur que ce ne soit pas possible autrement ...

  15. #15
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    salut,
    je suis confronté un peu au meme probleme que toi.
    Si tu dev que pour ie, tu peux utiliser un showmodaldialog qui te permettra de faire ce que tu veux.

    Malheureusement, on ne peut pas faire de threads multiples en js.
    Tu ne peux pas faire en sorte par exemple que apres avoir afficher ta popup perso, la page se mette en attente d'une notification de ta popup.

  16. #16
    Membre régulier Avatar de ashurai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 144
    Points : 115
    Points
    115
    Par défaut
    Merci pour ton conseil, malheureusement, l'appli doit être compatible IE / Firefox

  17. #17
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    oui ben alors t es comme moi, pas de solution pour autre chose que alert,
    moi c est prompt que je veux "surcharger"

Discussions similaires

  1. [AC-2007] Message d'alerte et de confirmation
    Par Tinien dans le forum Access
    Réponses: 2
    Dernier message: 22/07/2009, 14h39
  2. Changer un javascript confirm en alert
    Par Tidus159 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 23/05/2008, 09h30
  3. boite de confirmation et boite d'alerte
    Par dragon pourpre dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/10/2007, 22h46
  4. Focus par défaut des alert() , confirm() et prompt()
    Par NoT dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 20/03/2006, 11h30
  5. [VB.Net] Probleme avec dialogues (confirm et alert)
    Par crackity_jones666 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 26/11/2003, 22h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo