2010-03-05 14 views
15

Ich habe ein Textfeld, dessen Werte ich validieren muss (wenn Wert von Textfeld 50 ist, dann Nachricht in lblShowMsg anzeigen), wenn der Benutzer aus dem Textfeld (onBlur-Ereignis) tabs. Ich kann die Syntax nicht richtig finden.ASP.Net Textfeld onblur Ereignis

Ich habe diesen Code auf meinem Pageload-Ereignisse:

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

} 

Aber ich kann nicht scheinen, den Javascript-Code korrekt zu erhalten. Irgendwelche Vorschläge?

+2

warum fügen Sie das Attribut onblur on the fly und nicht im Markup? – awright18

Antwort

9

Im Code hinter: (VB.NET)

Auf der Seite Load-Ereignis

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

Wo txtAccountNumber die ID des TextBox in der Markup-Seite ist und Sie die ClientID der Textbox übergeben, da JavaScript Client-Seite nicht Server-Seite ist. Und jetzt in der Markup-Seite (.aspx) hat diese Javascript im Kopfbereich der Seite:

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

Hier ist die C# -Version: ddlCompanies.Attributes ["onBlur"] = "AddNewCompany1 (" + ddlCompanies.ClientID + ")"; –

5

Ist das der tatsächliche Code in Ihrem Page_Load? Sie müssen den Namen des Steuerelements und nicht den Typnamen für TextBox verwenden. Zum Beispiel können Sie versuchen wollen:

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

wo „textBox1“ ist die ID, die Sie in Ihrem Markup stattdessen auf die textBox zugeordnet.

Auch aus Javascript ist es sehr wahrscheinlich, dass sich die ID der textBox geändert hat, sobald sie auf der Seite gerendert wird. Es wäre besser, wenn Sie die Steuerung an die Validate-Funktion übergeben würde:

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

Dann würden Sie das Attribut wie folgt festgelegt:

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

Schließlich würde ich dringend empfehlen, die JQuery-Bibliothek verwenden, wenn Sie mache alles in Javascript. Es wird dein Leben 10x einfacher machen.

+0

Entschuldigung, das war ein Tippfehler meinerseits. Die ID der txtBox ist txtCategory – LearningCSharp

+0

Wenn ich den Code ausführen, wie Sie es oben zeigen (keine JQuery), erhalte ich eine Fehlermeldung "Microsoft JScript-Laufzeitfehler: 'document.form1.lblShowMsg 'ist null oder kein Objekt " – LearningCSharp

+0

Wiederum ist ein Teil des Problems, dass das Label, das Sie verwenden möchten, mehr als wahrscheinlich in etwas anderes umbenannt wird. Verwenden Sie so etwas wie Developer Tools in IE oder FireBug in Firefox _actual_ ID des Labels im Formular Beide Tools lassen Sie durch das DOM picken Sobald Sie es gefunden haben, verwenden Sie document.getElementById ("id of element here"), um das Element zu holen, und dann können Sie es innerHTML setzen Eigenschaft in Javascript –

2

Das funktioniert.

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

Stellen Sie sicher, dass die Funktion im Skriptteil der Seite liegt.


Meine Seite

<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 hinter

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

Brauche keine Warnung; Sie müssen eine Nachricht in einem Label anzeigen. (lblShowMsg.visible = true) – LearningCSharp

Verwandte Themen