2010-03-05 4 views
15

J'ai une zone de texte, dont j'ai besoin de valider les valeurs (si la valeur de textbox est 50, puis afficher le message dans lblShowMsg) lorsque l'utilisateur tabule hors de la zone de texte (événement onBlur). Je n'arrive pas à avoir la syntaxe correcte.ASP.Net textbox onblur événement

Je possède ce code sur mon événement pageLoad:

protected void Page_Load(object sender, EventArgs e) 
{ 
    txtCategory.Attributes.Add("onblur", "validate()"); 

} 

Mais je ne peux pas sembler obtenir correctement le code javascript. Aucune suggestion?

+2

pourquoi ajoutez-vous l'attribut onblur à la volée et non dans le balisage? – awright18

Répondre

9

Dans le code sous-jacent: (VB.NET)

En cas de chargement de la page

txtAccountNumber.Attributes["onBlur"] = "IsAccNumberValid(" & txtAccountNumber.ClientID & ")"; 

Où txtAccountNumber est l'ID de la zone de texte dans la page de balisage et vous passez la ClientID de la zone de texte parce que JavaScript est côté serveur non côté client. Et maintenant dans la page de balisage (.aspx) ont ce javascript dans la partie de la tête de la page:

<script type="text/javascript">      
function IsAccNumberValid(txtAccountNumber) {            
    if (txtAccountNumber.value.length < 6) {  
         alert(txtAccountNumber.value); 
      }  
     }  
</script> 
+3

Voici la version C#: ddlCompanies.Attributes ["onBlur"] = "AddNewCompany1 (" + ddlCompanies.ClientID + ")"; –

5

Est-ce le code réel de votre Page_Load? Vous devez utiliser le nom du contrôle, et non le nom de type pour TextBox. Par exemple, vous pouvez essayer:

textBox1.Attributes.Add("onblur", "validate();"); 

où « textBox1 » est l'ID que vous avez attribué à la zone de texte dans votre balisage à la place.

De même, à partir de Javascript, il est très possible que l'ID de la zone de texte ait changé une fois qu'il a été rendu sur la page. Il serait mieux si vous passer le contrôle à la fonction de validation:

function validate(_this) 
{ 
    if (_this.value == "50") 
     // then set the ID of the label. 
} 

Ensuite, vous définissez l'attribut comme ceci:

textBox1.Attributes.Add("onblur", "validate(this);"); 

Enfin, je recommande fortement d'utiliser la bibliothèque JQuery si vous faisons quoi que ce soit en Javascript. Cela rendra votre vie 10 fois plus facile.

+0

Désolé, c'était une faute de frappe de ma part. L'ID de la txtBox est txtCategory – LearningCSharp

+0

Lorsque j'exécute le code comme indiqué ci-dessus (pas de JQuery), un message d'erreur "Erreur d'exécution Microsoft JScript: 'document.form1 s'affiche.lblShowMsg 'est null ou un objet " – LearningCSharp

+0

Encore une fois, une partie du problème est que l'étiquette que vous souhaitez utiliser est plus que probablement renommée à quelque chose d'autre.Utilisez quelque chose comme les outils de développement dans IE ou FireBug dans Firefox pour traquer le _actual_ ID de l'étiquette sur le formulaire Ces deux outils vous permettront de parcourir le DOM.Une fois que vous l'avez trouvé, utilisez document.getElementById ("id of element here") pour récupérer l'élément, puis vous pouvez le définir innerHTML –

2

Cela fonctionne.

Textbox1.Attributes.Add ("onblur", "javascript: alert ('aaa');");

Assurez-vous que la fonction se trouve dans la partie script de la page.


Ma page

<script type="text/javascript"> 
    function Validate() { 

     alert('validate'); 

    } 

    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:TextBox ID="Textbox1" runat="server"></asp:TextBox> 
     <asp:Button ID="Button1" runat="server" Text="Button" /> 
    </div> 
    </form> 
</body> 
</html> 

Code

derrière

public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      Textbox1.Attributes.Add("onblur","Validate();"); 
     } 
    } 
+0

N'a pas besoin d'une alerte; Besoin d'afficher un msg dans une étiquette; (lblShowMsg.visible = true) – LearningCSharp