2010-03-05 13 views
15

Mam pole tekstowe, którego wartości muszę sprawdzić (jeśli wartość pola tekstowego to 50, a następnie wyświetl wiadomość w lblShowMsg), gdy użytkownik wyjdzie z pola tekstowego (zdarzenie onBlur). Nie mogę uzyskać prawidłowej składni.Zdarzenie onblur ASP.Net textbox

Mam ten kod w moim przypadku pageload:

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

} 

Ale nie wydaje się uzyskać kod javascript poprawne. Jakieś sugestie?

+2

dlaczego dodajecie atrybut onblur w locie, a nie w znacznikach? – awright18

Odpowiedz

9

w Kodeksie tyle: (VB.NET)

W przypadku obciążenia strona

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

Gdzie txtAccountNumber jest identyfikator TextBox na stronie znaczników i zdać ClientID pola tekstowego, ponieważ jest obsługa JavaScript po stronie klienta nie po stronie serwera. A teraz na stronie znaczników (.aspx) umieść ten javascript w nagłówkowej sekcji strony:

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

Oto wersja C#: ddlCompanies.Attributes ["onBlur"] = "AddNewCompany1 (" + ddlCompanies.ClientID + ")"; –

5

Czy to właściwy kod w swoim Page_Load? Musisz użyć nazwy kontrolki, a nie nazwy typu dla TextBox. Na przykład, może chcesz spróbować:

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

gdzie „TextBox1” to identyfikator przypisany do pola tekstowego w znacznikach zamiast.

Również z Javascriptu jest bardzo prawdopodobne, że identyfikator pola tekstowego zmienił się po wyrenderowaniu na stronę. Byłoby lepiej, gdyby przekazać kontrolę do funkcji sprawdzenia poprawności:

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

Następnie należy ustawić atrybut tak:

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

Wreszcie Gorąco polecam korzystania z biblioteki jQuery jeśli Robię wszystko w JavaScript. Ułatwi to twoje życie 10 razy.

+0

Przepraszam, to był literówka z mojej strony. Identyfikator txtBox to txtCategory – LearningCSharp

+0

Po uruchomieniu kodu w sposób pokazany powyżej (brak JQuery) pojawia się komunikat o błędzie "Microsoft Runtime Error:" document.form1.lblShowMsg 'ma wartość zerową lub nie jest obiektem " – LearningCSharp

+0

Po części, problem polega na tym, że etykieta, której chcesz użyć, jest najprawdopodobniej przemianowana na coś innego. Użyj narzędzi programistycznych w IE lub FireBug w Firefoksie, aby znaleźć _actual_ Identyfikator etykiety na formularzu Oba te narzędzia pozwolą ci dziurkować DOM. Gdy go znajdziesz, użyj document.getElementById ("id elementu tutaj"), aby pobrać element, a następnie możesz ustawić jego wewnętrzny HTML. Właściwość w Javascript. –

2

To działa.

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

Upewnij się, że functiion znajduje się w części skryptu strony.


Moja strona

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

kod za

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

Nie potrzebujesz ostrzeżenia; Musisz wyświetlić msg w etykiecie; (lblShowMsg.visible = true) – LearningCSharp

Powiązane problemy