我需要一个明确的方法来找出什么样的Javascript正在修改表单值?我已经能够做的最好的是:有没有什么方法可以追溯到一个javascript函数调用?
$(function(){
console.log($("input[name=Email]").val());
});
但是这个值没有被执行的点改变。
我需要一个明确的方法来找出什么样的Javascript正在修改表单值?我已经能够做的最好的是:有没有什么方法可以追溯到一个javascript函数调用?
$(function(){
console.log($("input[name=Email]").val());
});
但是这个值没有被执行的点改变。
有一个新的方式在Chrome和Firefox做到这一点:console.trace
在这里看到:
https://developer.mozilla.org/en-US/docs/Web/API/console.trace
在网页监制人:
> console.trace()
console.trace() VM251:2
(anonymous function) VM251:2
InjectedScript._evaluateOn VM223:581
InjectedScript._evaluateAndWrap VM223:540
InjectedScript.evaluate VM223:459
undefined
所以修改接受的答案:
$('input#myInputAbove').change(function(){
console.trace(); // No breakpoint needed anymore.
});
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");
}
}
我需要一种方法来找出_what_正在修改该值,而不是它正在被修改。 – 2012-02-12 16:05:46
@BenDauphinee当我只是想帮助你时,即使我对你不了解,它也很难-1。你可以不接受我的回答 – ParPar 2012-02-12 16:12:22
我没有使用downvote作为个人攻击。在这个指导范围内,可以降低对这个问题不正确的答案。请参阅http://meta.stackexchange.com/a/112664 – 2012-02-12 16:34:19
插入此直接下面你要跟踪的表单元素的HTML:
$('input#myInputAbove').change(function(){
console.log('change detected'); // Breakpoint on this line
});
使用Firebug插入breakpoint到上述JS方法。打它,看看堆栈跟踪。
下面将告诉你什么是事件处理程序已绑定到一个元素:
$.each($("input[name='Email']").data('events'), function(i, event){
$.each(event, function(i, handler){
console.log(handler.handler);
});
});
对不起,不是'.fn',而是'.handler' – osahyoun 2012-02-12 16:18:04
这是用于调试?如果是这样的话,可以使用浏览器开发工具来设置一个断点并逐步执行代码? – 2012-02-12 15:49:24
这将在dom加载时执行..是你想要的? – 2012-02-12 15:50:29
这不是我的代码,或者至少我无法找到它在数百行中的位置。如果我将我的jQuery版本从1.3.2(网站当前所在的版本)更改为1.7.1,则输入开始发生更改。 – 2012-02-12 15:52:09