2010-03-05 22 views
15

Ho una casella di testo, i cui valori devo convalidare (se il valore della casella di testo è 50, quindi visualizzare il messaggio in lblShowMsg) quando l'utente esce dalla casella di testo (evento onBlur). Non riesco a trovare la sintassi giusta.Evento onblur textbox ASP.Net

Ho questo codice sul mio evento pageload:

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

} 

Ma io non riesco a ottenere il codice javascript corretto. Eventuali suggerimenti?

+2

perché vuoi aggiungere l'attributo onblur al volo e non nel codice? – awright18

risposta

9

nel codice dietro: (VB.NET)

Sul caso di caricamento della pagina

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

Dove txtAccountNumber è l'ID del controllo TextBox nella pagina markup e si passa la ClientID della casella di testo perché JavaScript non è lato client lato server. E ora nella pagina di markup (aspx) avere questo javascript nella sezione head della pagina:

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

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

5

È il codice effettivo nel tuo Page_Load? È necessario utilizzare il nome del controllo e non il nome del tipo per TextBox. Ad esempio, si può provare:

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

dove "textBox1" è l'ID assegnato alla casella di testo nel markup, invece.

Inoltre, da Javascript, è molto probabile che l'ID del textBox sia cambiato una volta che viene reso alla pagina. Sarebbe meglio se si desidera passare il controllo alla funzione validate:

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

allora si sarebbe impostare l'attributo in questo modo:

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

Infine, vi consiglio vivamente di utilizzare la libreria jQuery, se si Stai facendo qualcosa in Javascript. Renderà la tua vita 10 volte più facile.

+0

Mi dispiace, quello è stato un errore di battitura da parte mia. L'ID del txtBox è txtCategory – LearningCSharp

+0

Quando eseguo il codice mentre lo mostri sopra (senza JQuery), viene visualizzato un messaggio di errore "Errore di runtime di Microsoft JScript: 'document.form1.lblShowMsg 'è null o non è un oggetto " – LearningCSharp

+0

Ancora una volta, parte del problema è che l'etichetta che si desidera utilizzare è più che probabile rinominata in qualcos'altro.Utilizzare qualcosa come Strumenti di sviluppo in IE o FireBug in Firefox per dare la caccia al _actual_ ID dell'etichetta sul modulo Entrambi gli strumenti ti consentiranno di esplorare il DOM. Una volta trovato, usa document.getElementById ("id dell'elemento qui") per recuperare l'elemento e quindi puoi impostarlo in innerHTML proprietà in Javascript –

2

Questo funziona.

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

Assicurarsi che la funzione si trovi nella parte di script della pagina.


La mia pagina

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

codice dietro

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

Non serve un avviso; È necessario visualizzare un messaggio in un'etichetta; (lblShowMsg.visible = true) – LearningCSharp

Problemi correlati