2011-04-26 12 views
5

Tengo un control de servidor textbox asp.net. Estoy modificando el valor de la caja de texto de javascript que quiero detectar cuando se cambia el texto de la caja de texto. Intenté el evento de cambio que se invoca en las fouc perdidas cuando cambia el texto. Pero en mi caso, estoy cambiando el texto de Javascript. ¿Cómo puedo conseguir esto?Cómo detectar el evento de cambio de cuadro de texto desde javascript

Respuesta

6

Al actualizar la propiedad valueno se activará el evento de cambio. El evento de cambio es activado por el usuario.

Usted puede escribir una función que cambia el valor y lo hace cualquier otra cosa que hay que hacer ...

function changeTextarea(str) { 
    document.getElementById('a').value = str; 
    // Whatever else you need to do. 
} 

... o sondear el valor textarea 's ...

(function() { 
    var text = getText(); 
    var getText = function() { 
     return document.getElementById('a').value; 
    } 

    setInterval(function() { 
     var newtext = getText(); 
     if (text !== newText) { 
      // The value has changed. 
     } 
     text = newText; 
    }, 100); 
})(); 

... o explícitamente llame al evento onchange() usted mismo.

document.getElementById('a').onchange(); 

(Asumiendo que configura el evento con onchange propiedad.)

Las soluciones no son muy grandes soluciones. De cualquier manera, necesita hacer alguna intervención para activar código adicional al actualizar una propiedad textareavalue.

+0

que sin duda puede hacer esto ... ver más adelante. –

+2

@Cos Eso es con jQuery, del cual el OP nunca mencionó. También llamas explícitamente a 'change()', que es básicamente lo que sugerí en mi respuesta. – alex

+0

@Alex jquery es javascript (o más bien una colección de javascript) y demuestra que la invocación de '.change()' logrará el objetivo que el OP establece como una mejor guía que "hace lo que sea necesario" –

-1

Si usted podría utilizar jQuery, sería algo como esto

$('#id_of_text_area').change(function(){ 
    //do something 
}); 
0

Se podría forzar una devolución de datos de Javascript y por lo tanto forzando un evento de recarga de la página. En la página.GetPostBackEventReference() puede manejar el evento y quizás desencadenar algún otro evento.

Esto no es una buena solución thougth y realmente recomendamos que lo hace todo a través de javascript ni deje caer el javascript y dejar todo lo hadle .NET, tal vez con Ajax.NET

La siguiente link explica hwo lo haces para un botón normal, pero no debería ser difícil hacerlo para un evento onchange.

0

usando jQuery se puede asignar un manejador de 'cambio' e invocar el controlador de la siguiente manera:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      //makes 'DetectChange' the handler when TextBox1 changes... 
      $('#TextBox1').change(function() { 
       DetectChange(); 
      }); 
     }); 

     function DetectChange() { 
      alert("TextBox1 has been changed"); 
     } 

     function ClickTheButton() { 
      // .val actually 'changes the value' 
      // while you have to add .change() to invoke the actual change event handler... 
      $('#TextBox1').val("Changed When Button Clicked").change(); 

      //return false prevents the click event of the button from doing a post back 
      //keeping everything on the client for this sample.. 
      return false; 
     } 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
     <input id="Button1" type="button" value="Change TextBox1" onclick="return ClickTheButton();" /> 
    </div> 
    </form> 
</body> 
</html> 
+1

¿Por qué no pasas 'DetectChange' directamente al método' click() '? – alex

+1

@Alex OP dice 'Pero en mi caso, estoy cambiando el texto de Javascript', así que usé el evento click del botón para simular ese elemento del escenario. No sé "qué" javascript OP usa o cómo se invoca, así que solo comencé la demostración que haría algo similar. Tiene razón en que '.change' podría llamarse desde el clic y si eso satisface las necesidades del OP, entonces es genial. –

Cuestiones relacionadas