2012-02-12 6 views
6

Necesito una forma definitiva de averiguar qué Javascript está modificando un valor de formulario? Lo mejor que he podido hacer es:¿Hay alguna forma de rastrear una llamada a la función javascript?

$(function(){ 
    console.log($("input[name=Email]").val()); 
}); 

Pero el valor no se ha modificado por el punto que esto se ejecuta.

+1

es esto para la depuración? En caso afirmativo, ¿podría utilizar herramientas de desarrollo de navegadores para establecer un punto de interrupción y recorrer su código? –

+0

esto se ejecutará cuando dom cargado .. es que quieres ?? –

+0

No es mi código, o al menos no puedo ubicarlo en cientos de líneas. Si cambio mi versión de jQuery de 1.3.2 (en qué está actualmente el sitio) a 1.7.1, la entrada comienza a cambiarse. –

Respuesta

9

Hay una nueva manera de hacer esto en Chrome y Firefox: console.trace

Ver aquí:

https://developer.mozilla.org/en-US/docs/Web/API/console.trace

En web inspector:

> console.trace() 
console.trace() VM251:2 
(anonymous function) VM251:2 
InjectedScript._evaluateOn VM223:581 
InjectedScript._evaluateAndWrap VM223:540 
InjectedScript.evaluate VM223:459 
undefined 

Así que para modificar la respuesta aceptada:

$('input#myInputAbove').change(function(){ 
    console.trace(); // No breakpoint needed anymore. 
}); 
-1
prev_value = document.getElementByName('Email').value; 

$("input[name=Email]").change(function(){ 
    var cur_value = document.getElementById('Email').value; 
    if(cur_value != prev_value){ 
     alert("Value changed"); 
    //or console.log("Value changed"); 
    } 
} 
+0

Necesito una forma de averiguar _what_ está modificando el valor, no que esté siendo modificado. –

+1

@BenDauphinee Es apenas -1 cuando trato de ayudarte, aunque no te haya entendido bien. simplemente no puede aceptar mi respuesta – ParPar

+3

No estoy usando el voto abajo como ataque personal. Está dentro de las pautas rechazar una respuesta que no es correcta para la pregunta. Ver http://meta.stackexchange.com/a/112664 –

2

insertar este directamente debajo del HTML del elemento de formulario que desea rastrear:

$('input#myInputAbove').change(function(){ 
    console.log('change detected'); // Breakpoint on this line 
}); 

Uso FireBug para insertar una breakpoint en el método anterior JS. Dale un golpe y mira la stacktrace.

1

A continuación se le mostrará lo que los manipuladores de eventos se han unido a un elemento:

$.each($("input[name='Email']").data('events'), function(i, event){ 
    $.each(event, function(i, handler){ 
     console.log(handler.handler); 
    }); 
}); 
+0

lo siento, no '.fn', sino' .handler' – osahyoun

Cuestiones relacionadas