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 :

Textbox et fenêtre 'confirm'


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut Textbox et fenêtre 'confirm'
    Bonjour,

    J'ai cherché sur le net une solution à mon problème, mais je n'en vois pas.

    Voila ce que je souhaite faire:
    Dans ma page web, j'ai un textbox. Lorsqu'on remplis ce textbox, une valeur doit se mettre à jour dans la table TABLE_A en base et, si l'utilisateur le souhaite, un élément dans une autre table (TABLE_B) se créé aussi.


    J'ai donc lié à ce textbox un évenement OnTextChanged.

    Dans le code de cet évenement OnTextChanged, j'aimerai effectuer les opérations suivantes:

    1. mettre a jour le champ de la table TABLE_A avec la valeur du Textbox. Là, pas de soucis.

    2. demander une confirmation de création d'un nouvel élément en TABLE_B (genre boite de dialogue 'confirm' )

    3. si l'utilisatuer est OK, créer un nouvel élément dans TABLE_B.


    J'ai essayé d'ajouter un attribut au textbox comme ceci (dans le Page_Load)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.maTextBox.Attributes.Add("ontextchanged", return confirm('Oui, ou non?');");
    mais aucune boite de dialogue s'affiche. Et quand bien même, je ne sais pas comment récupérer la valeur de retour pour pouvoir tout de même exécuter l'étape 1 et exécuter l'étape 3 en fonction de la réponse utilisateur.

    Comment-dois-je faire pour réaliser ceci ?


    Merci d'avance!

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Avec this.maTextBox.Attributes.Add, tu ajoutes un attribut JavaScript. Or ontextchanged n'est pas un événement JavaScript.

    Perso, je ferais:
    1 input type hidden avec runat="server"
    1 bouton pour valider la saisie de la textbox
    Lorsque que le user clique sur le bouton, ça affiche la ConfirmBox. S'il confirm, tu mets 1 dans l'input hidden, sinon 0.
    Tu déclenches le post back.
    Côté serveur, tu récupères la valeur de l'input. Si 1 tu fais les 2 ajouts en base, si 0, tu fais que le premier

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    Merci, mais justement, j'aurai aimé épargner un clic supplémentaire à l'utilisateur car la textbox se trouve dans un gridview et l'utilisateur peut avoir à modifier plusieurs lignes comme ca :s

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    L'événement javascript que tu cherches est OnBlur alors

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    J'ai testé avec OnBlur, mais la conformbox que j'appelle n'a aucun effet.
    Si je clique sur le bouton "Annuler" de la boite de dialogue, l'évènement TextChanged s'execute quand même :s

  6. #6
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Quand tu fais afficher la source de ta page dequis IE quel est le code associé à l'évènement?
    Perso, je ferais cela sans javascript mais avec une succession d'écran. C'est un peu plus basique, mais à toutes épreuves.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    Voici le code ASP / C#:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <asp:TextBox ID="tb_Test" runat="server" 
            AutoPostBack="true"
            OnTextChanged="tb_Test_TextChanged" />
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    protected void Page_Load(object sender, EventArgs e)
    {
        tb_Test.Attributes.Add("onblur", "return confirm('Oui, ou non?');");
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void tb_Test_TextChanged(object sender, EventArgs e)
    {
        tb_OutputConsole.Text += "\ntb_Test_TextChanged fired: " + tb_Test.Text;
    }
    Et voici le code généré (depuis Firefox 3.0.10):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input name="ctl00$ContentPlaceHolder1$tb_Test" type="text" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$tb_Test\',\'\')', 0)" onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;" id="ctl00_ContentPlaceHolder1_tb_Test" onblur="return confirm('Oui, ou non?');" />

    Quoi que je réponde dans la boite de dialogue, l'évenement tb_Test_TextChanged est exécuté

    Le soucis, c'est que dans la réalité, cette textbox est dans une gridview, donc je ne sais pas si je peut opter pour la solution succession d'écrans :s

  8. #8
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    T'aurais pu creuser un peu hein
    C'est OnBlur et non onblur

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    Ouais, nan mais j'ai essayé aussi avec les majuscules, ça ne change rien: si je clique sur "Annuler", l'évenement OnTextChanged est appelé.

    Cà, à la limite, ça ne me dérange pas. Ca m'arrange même, à condition que j'ai un moyen de récupérer la réponse de la confirmbox.
    Comment savoir si l'utilisateur a cliqué sur 'OK' ou sur 'Annuler' ?

  10. #10
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    ce serait pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return confirm('Oui, ou non?'); return false;
    return false permet de ne pas soumettre.

    Je prompose de déplacer le post côté javascript.
    "Winter is coming" (ma nouvelle page d'accueil)

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    Ca ne marche pas mieux :s

    De plus, l'évenement OnBlur ne fonctionne que si on clique à l'extérieur de la textbox une fois modifiée. Mais si on appuie sur entrée, l'évenement 'OnTextChanged' est déclenché, mais pas l'évenement OnBLur.

    Donc, ce n'est pas une bonne solution. Imaginons que par habitude, l'utilisateur tape entrée au lieu de cliquer ailleurs, le bon traitement ne se fera pas.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    J'essaye toujours de trouver une réponse sur le web, mais je ne trouve rien. Je ne trouve pas d'evenement correct en javascript pour essayer d'appeler une confirmbox, et quand bien même, la réponse donnée par la confirmbox n'est pas prise en compte...

    Si ca se trouve, je cherche trop compliqué, y a-t-il une bonne pratique à suivre pour gérer ce genre de cas ?

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    c'est si tordu que çà ce que je souhaite réaliser ? :'(

  14. #14
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,
    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
    24
    25
    26
    27
    28
     
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="WebForm.aspx.cs" Inherits="WebForm" %>
     
    <%@ Register Src="WebUserControl.ascx" TagName="WebUserControl" TagPrefix="uc1" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Untitled Page</title>
        <script language="javascript" type="text/javascript">
        function fctTest(frm){
            if(confirm('Oui, ou non?'))
            {
                frm.submit();
            }
            else{
                alert(frm.name);
            }
        }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:TextBox ID="txt" runat="server" OnBlur="fctTest(this.form)"></asp:TextBox>
            </div>
        </form>
    </body>
    </html>
    "confirm" renvoi "true" ou "false". Il faut que ta fonction javascript qui permet de soumettre le formulaire tienne compte de ça. Après ce code est peut-être plus adapté à du html pur que du .Net. A tester...

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    Effectivement, ca marche un peu mieux.

    Dans le code du script, j'aimerai accéder à une checkbox invisible afin de l'initialiser en fonction de ce que l'utilisateur a cliqué. Le soucis, c'est que je n'arrive pas à trouver comment y accéder.

    ex:

    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
    <script language="javascript" type="text/javascript">
        function fctTest(frm)
        {
            /// initialiser la checkbox
            [???].cb_hidden.checked = confirm('Oui, ou non?');
        }
    </script>
     
    ...
     
    <asp:CheckBox ID="cb_hidden" runat="server" visible="false" />
     
    <asp:TextBox ID="tb_Test" runat="server" 
            AutoPostBack="true"
            OnBlur="fctTest(this.form)"
            OnTextChanged="tb_Test_TextChanged" />

    (Petit détail, je travaille avec une master page, donc je n'ai pas de form ni d'ID de form)

Discussions similaires

  1. Modification de la fenêtre confirm
    Par nletteron dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 27/07/2007, 15h47
  2. Fenêtre confirm qui s'affiche quand elle veut
    Par XhiAlpha dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/05/2007, 15h39
  3. Fenêtre confirmation sur Programme Access
    Par psychee dans le forum VBA Access
    Réponses: 1
    Dernier message: 03/04/2007, 12h57
  4. [VS2005] [C#] TextBox dans fenêtre MDI fille
    Par chocogrenouille dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/09/2006, 21h28
  5. Fenêtre confirm différent
    Par Oberown dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/06/2006, 08h37

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