2010-01-06 6 views
3

Ceci est mon étiquette que je veux afficher si l'utilisateur a omis le champ avant de cliquer sur le bouton. Qu'est-ce que je fais de mal parce que rien ne se passe quand je clique sur le bouton.Rendre l'étiquette ASP visible en Javascript?

<asp:Label ID="lblError" runat="server" 
Text="* Please complete all mandatory fields" style="display: none;" > 
</asp:Label> 

Ceci est la fonction que j'appelle quand je clique sur le bouton:

function valSubmit(){ 
    varName = document.form1.txtName.value; 
    varSurname = document.form1.txtSurname.value; 

    if (varName == "" || varSurname == "") 
    { 
    document.getElementById('lblError').style.display = 'inherit'; 

    } 
    else 
    { 

    .................other code go here........................... 
    return true; 
    } 

}

Répondre

5

Pourquoi ne pas utiliser les contrôles de validation? Ceux-ci vous donneront client et validation côté serveur de la boîte - pas que je suis paresseux ou quoi que ce soit ... ;-)

Modifier pour commenter:

Le RequiredFieldValidator peut être configuré pour afficher un seul rouge astérisque à côté de chaque contrôle, et un contrôle sommaire de validation pourrait être utilisé MAIS cela prendrait de l'espace.

Ainsi, il est possible que ASP.Net renomme votre contrôle, de sorte que vos JS doivent lire:

document.getElementById('<%= lblError.ClientID %>').style.display = 'inherit'; 

Donnez qu'un aller ...

Personnellement, je toujours utiliser le validateur contrôles ;-)

+0

L'espace est un problème sur ma forme, il est une très petite forme de pop up. – Etienne

+0

Incidemment, si l'espace est une prime, vous pouvez utiliser un validateur personnalisé pour vérifier l'état de chaque contrôle et l'affichage du message d'erreur sera également pris en charge par le validateur personnalisé. Vous devrez écrire votre JS comme mentionné précédemment (le ClientID) et vous devrez également écrire une validation côté serveur correspondante au cas où votre visiteur aurait désactivé JavaScrript - quelque chose que votre OQ va tomber dessus. –

+0

En outre, si vous utilisez les contrôles de validation, assurez-vous de vérifier Page.IsValid dans votre code avant d'effectuer des opérations qui reposent sur ces données valides, mmm'kay? –

2

Vous ne devriez pas utiliser lblError comme ID dans le code JavaScript. Au lieu de cela, vous devez utiliser:

'<%= lblError.ClientID %>' 

Bien sûr, cela n'est possible que si vous générez le code JavaScript dans le fichier ASP.NET.

+0

Nope n'a pas fonctionné. – Etienne

0

Jetez un oeil à jquery, vous pouvez sélectionner par les classes au lieu de id qui ne sera jamais altéré au moment du rendu sur la page (contrairement ids)

0

sur votre événement souhaité utiliser cette

document.getElementById('<%= lblError.ClientID %>').style.display = ""; or 
document.getElementById('<%= lblError.ClientID %>').style.display = "block" 

ok alors essayez ceci, au lieu du côté client, faites-le côté serveur. D'abord le rendre invisible comme, sur l'ensemble d'événements de formload invisible en utilisant lblEror.visible = false et supprimer style = "display: none" de html. Puis sur l'événement/s souhaité le rendre visible et après traitement à nouveau invisible.

Si vous le voulez strictement Thorough js.try cette solution de contournement. supprimer le style de l'étiquette d'asp. sur body onload le désactive de certaines fonctions de js. maintenant sur l'événement, cliquez BTN rendre visible à l'aide de la méthode quelque chose comme ceci

function Validate() 
    { 
     var objLbl = $get('<%=lblError.ClientID%>'); 
     if (validations fails) 
     { 
      objLbl.style.display = ""; //displays label 
      return false; 
     } 
     else 
     { 
      objLbl.style.display="none" //hides label 
      return true; 
     } 
    } 
<asp:button id="btnValidate" runat="server" onclientclick="return validate();"/> 

Espérons que cela fonctionne

+0

Voter si c'est vos solutions –

+0

La note ne marche pas ......... – Etienne

Questions connexes