none
Comment changer de façon dynamique un message ? RRS feed

  • Question

  • Bonjour,

    Savez comme faire pour changer de façon dynamique "ErrorMessage"  en Javascript ?  :)

    <asp:RegularExpressionValidator ID="Address" runat="server"

    ErrorMessage="Veuillez saisir un numéro à 10 chiffres qui commence par 0"               

    ControlToValidate="txtAddress" ValidationExpression="^0[0-9]{9}$               

    Display="None" SetFocusOnError="True" ValidationGroup="MonAddress" />

    function ValidatePage(source, value) 

    {         

    console.debug(value);         alert('coucou');      

    document.getElementById("<%= optMlleDeliveryAddress.ClientID%>").ErrorMessage = "test";         

    $find("vcePhoneDeliveryAddress")._ensureCallout();         $find("vcePhoneDeliveryAddress").show(true);          

    return false;           

    }

    J'ai beau essayé toute les combinaisons possibles, sans succès...

    Une idée ? :)

    Par avance merci :)

    Cordialement,


    • Modifié cvbdev lundi 13 août 2012 15:28
    lundi 13 août 2012 15:27

Réponses

  • Bonjour,

    Essayez :

    document.getElementById("<%= Address.ClientID%>").ErrorMessage = "test";         

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    • Proposé comme réponse Aurel Bera vendredi 14 septembre 2012 06:12
    • Marqué comme réponse Aurel Bera lundi 24 septembre 2012 12:52
    mercredi 15 août 2012 09:10
    Modérateur

Toutes les réponses

  • Bonjour,

    Essayez :

    document.getElementById("<%= Address.ClientID%>").ErrorMessage = "test";         

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    • Proposé comme réponse Aurel Bera vendredi 14 septembre 2012 06:12
    • Marqué comme réponse Aurel Bera lundi 24 septembre 2012 12:52
    mercredi 15 août 2012 09:10
    Modérateur
  • Bonjour, 

    Merci de ta réponse. 

    Après moult recherche, j'ai enfin trouver la façon de faire.

    Il y a plusieurs façon de réaliser :

    - Si on passe par le customerValidator, on peut changer le message par 

    source.errormessage = MessErrorRegExPhone;


    Attention toutefois au comportement assez curieux de la zone en question. Si on n'as plusieurs message pour un même champs, il s'afficheront de façon séquentiel. Ce qui est assez ennuyeux pour des cas particuliers (sans compter le manque de puissance évident de ce contrôle). Afin d'éviter ces comportements assez désagréables, je suis passé par du Javascript "pure". Et là d'autres soucis se pose.

    En Javascript, il y a deux façon de procéder.

    1- Dans un premier temps il faut passer par la méthode que tu m'a donné

    Document.getElementById("<%= Phone.ClientID%>").errormessage = Message;

    Seulement cette méthode ne fonctionnera qu'une seule fois (si on exécute de nouveau cette méthode avec un autre message à l'intérieur, ça ne fonctionnera pas, sauf à recharger la page).  Si on désire changer le message, pour traiter une tiers conditions, le seul moyen que j'ai pu trouver et de passer par GetElementByClass.

    L'inconvénients de cette méthode c'est son appel. En effet, l'élément existe à partir du moment ou le message à été affiché une première fois. Sans ça aucune eixstance, et "Res" aura comme valeur "null"...

    var res = document.getElementById('Phone_popupTable');

    var mesCellules = res.getElementsByClassName('ajax__validatorcallout_error_message_cell');

    mesCellules[0].innerHTML = Message;

    Pour résumer voici le code que j'ai mis en oeuvre, et qui fonctionne :

    var res = document.getElementById('Phone_popupTable');

    if (res == null)

    {

    document.getElementById("<%= Phone.ClientID%>").errormessage = Message;

    }

    else

    {  

    var mesCellules = res.getElementsByClassName('ajax__validatorcallout_error_message_cell');  

    mesCellules[0].innerHTML = Message;

    }

    Bonne journée et merci de ta réponse ! :)

    ++

    jeudi 16 août 2012 07:36