2009-11-30 18 views
6

Tengo dos cuadros de texto tbxProdAc & txtbxHowMany. Me gustaría escribir un poco de código en el código subyacente para que cuando ingrese texto en uno, se elimine cualquier texto que haya estado en el otro.Atributos.Agregar Evento OnClick en el código C# detrás de

¿Cómo se puede lograr esto y en qué caso debo colocarlo?

He intentado utilizar

txtbxHowMany.Attributes.Add("onclick", "document.getElementById('tbxProdAC').innerText='';");

en el caso de carga de la página, pero twithout éxito ... debe estar presente en el pre_init?

Como puede contar, complete aquí al principiante en el trabajo.

Respuesta

7

En primer lugar, asegúrese de que cuando se haya generado la página que la ID siga siendo "tbxProdAC" si se trata de un control .Net, la ID se habría modificado. En este caso puedes usar una clase.

intente lo siguiente, - Este utiliza jQuery - tendrá que incluir esa

txtbxHowMany.Attributes.Add("onclick", "$('#tbxProdAC').val('');"); 

Añadir lo siguiente a la sección de carga de la página.

<script type="text/javascript" src="jquery.js"></script> 

Y se puede obtener el archivo jquery.js desde aquí: http://docs.jquery.com/Downloading_jQuery#Download_jQuery

y por qué: https://stackoverflow.com/questions/308751/why-use-jquery

+0

Gracias Pino: al decir "necesitarás incluir eso", ¿quieres decir simplemente agregar en la biblioteca jquery la referencia en mi código fuente o en realidad en el código? (disculpas por la gruesa pregunta) – MrDean

+1

He actualizado mi publicación principal, y tu no eres "grueso" preguntando. ¡Todos necesitamos hacer preguntas! Sigue preguntando qué es lo que te hace mejor. – LiamB

+0

Hmmm ... ¡Debo haber hecho algo mal! Utilicé el código proporcionado, la página se cargó bien, ingresé datos en tbxProdAC y luego hice clic en txtbxHowMany. Esto generó un error definido como "El objeto no admite esta propiedad o método" ¡Debo haberme equivocado en alguna parte!?! Puse el '... attributes.add ..' en mi código C# detrás en el evento de carga de página ... ¿era correcto o debería entrar en el código fuente de mymain? Gracias por su ayuda. – MrDean

-1

Si se utiliza la vista de diseño, puede hacer doble clic en los cuadros de texto y va a crear estos métodos para usted:

private void tbxProdAc_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void txtbxHowMany_TextChanged(object sender, EventArgs e) 
    { 

    } 

a continuación, sólo tiene que editar como esto:

 private void tbxProdAc_TextChanged(object sender, EventArgs e) 
    { 
     txtbxHowMany.Clear(); 
    } 

    private void txtbxHowMany_TextChanged(object sender, EventArgs e) 
    { 
     tbxProdAc.Clear(); 
    } 
+0

TextBox .. ::. Evento TextChanged: se produce cuando el contenido del cuadro de texto cambia entre las publicaciones en el servidor. – LiamB

1

ASP.NET Cambia la ID de los controles generados, por lo que probablemente su tbxProdAc tendrá su ID cambiado a otra cosa. Tiene que ejecutar la aplicación una vez, ver fuente y conocer el ID de su control y vuelva a colocar la "tbxProdAc" con la nueva identificación en su

txtbxHowMany.Attributes.Add("onclick", "document.getElementById('tbxProdAC').innerText='';"); 

y sí, va a trabajar onLoad.

1

El principal problema aquí es que cuando su control está dentro de otro control (por ejemplo, una cuadrícula) asp.net prefija el ID de su control para mantener el ID del control único, por ejemplo, el ID no será txbProdAc sino será Gridview1_txbProdAc o incluso esto: Panel1_Panel2_gridview1_txProdAc.

si quiere saber en el código detrás del cual id asp.net 'dará' o 'cambiará el nombre' de su control, puede usar la propiedad .ClientID: txtProdAc.ClientID le dará la identificación que debe usar desde javascript/jquery.

si alguna vez coloca su txbProdAc dentro de otro control, seguirá funcionando porque la función .ClientID siempre le dará la identificación correcta para el control en el script del cliente.

Michel

0

Para ampliar Michel's respuesta, estás añadiendo caso debe ser correcta, pero es necesario para establecer el selector de ID diferente como ASP.NET cambia el id que se envía al cliente:

txtbxHowMany.Attributes.Add("onclick", string.Format("document.getElementById('{0}').innerText='';", tbxProdAC.ClientID)); 
0

Añadiendo un poco a lo que TheOne ha respondido, cuando veamos el origen de la página web, se mostrará el contenido presentado. donde la ID será diferente. algo como esto.

txtbxHowMany.Attributes.Add("onclick", "document.getElementById('ctl00_ContentPlaceHolder1_tbxProdAC').innerText='';") 
Cuestiones relacionadas