2010-03-05 25 views
15

Tengo un cuadro de texto, cuyos valores necesito validar (si el valor del cuadro de texto es 50, luego mostrar el mensaje en lblShowMsg) cuando el usuario realiza pestañas fuera del cuadro de texto (evento onBlur). Parece que no puedo obtener la sintaxis correcta.ASP.Net textbox onblur evento

tengo este código en mi caso pageload:

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

} 

Pero me parece que no puede obtener el código Javascript correcta. ¿Alguna sugerencia?

+2

qué ¿Desea agregar el atributo onBlur sobre la marcha y no en el margen de beneficio? – awright18

Respuesta

9

En el código subyacente: (VB.NET)

En el caso de carga de la página

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

Dónde txtAccountNumber es el identificador del cuadro de texto en la página de marcado y se pasa el ClientID del cuadro de texto porque JavaScript no está del lado del cliente del lado del servidor. Y ahora en la página de marcado (.aspx) tienen este JavaScript en la sección de cabecera de la página:

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

Aquí está la versión C#: ddlCompanies.Attributes ["onBlur"] = "AddNewCompany1 (" + ddlCompanies.ClientID + ")"; –

5

¿Es ese el código real en su Page_Load? Debe usar el nombre del control y no el nombre de tipo para TextBox. Por ejemplo, es posible que desee probar:

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

donde "textBox1" es el ID que ha asignado a la caja de texto en su margen de beneficio en su lugar.

Además, desde Javascript, es muy posible que el ID de la caja de texto haya cambiado una vez que se procesa en la página. Sería mejor si desea pasar el control a la función de validación:

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

allí tendría que establecer el atributo de la siguiente manera:

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

Por último, recomiendo encarecidamente el uso de la biblioteca jQuery si está haciendo algo en Javascript. Te hará tu vida 10 veces más fácil.

+0

Lo siento, eso fue un error tipográfico de mi parte. El ID del txtBox es txtCategory – LearningCSharp

+0

Cuando ejecuto el código como lo muestra arriba (no JQuery), aparece un mensaje de error "Error de tiempo de ejecución de Microsoft JScript: 'document.form1.lblShowMsg 'es nulo o no es un objeto " – LearningCSharp

+0

Una vez más, parte del problema es que la etiqueta que desea utilizar es más que probable que se renombre a otra cosa. Use algo como Herramientas de desarrollador en IE o FireBug en Firefox para buscar el _actual_ ID de la etiqueta en el formulario. Ambas herramientas le permitirán navegar a través del DOM. Una vez que lo encuentre, use document.getElementById ("id of element here") para buscar el elemento, y luego puede configurar su innerHTML propiedad en Javascript. –

2

Esto funciona.

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

Asegúrate de que la función esté en la parte de la secuencia de comandos de la página.


Mi página

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

código detrás

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

No necesita una alerta; Necesidad de mostrar un mensaje en una etiqueta; (lblShowMsg.visible = true) – LearningCSharp

Cuestiones relacionadas