2013-06-27 47 views
0

我想提出一個修改是使用JavaScript動態填充與其他文本框的變化進行的計算文本框值的項目,但我不想改變價值變動原始的JavaScript文件。如何檢測由動態

如何檢測時,文本框的值已經由最初的JavaScript改變,我需要當值被改變,那麼火了我自己的功能來檢測。

我願意使用jQuery,如果這是更容易。

嘗試:

$("#total_amt").on("change", function() { 
     alert("Handler for .change() called."); 
    }); 

,但是這隻能在我手動改變不是當它是動態變化的total_amt的價值。

回答

0

試試這個:

$("#total_amt").on("input", function() { 
    alert("Handler for .change() called."); 
}); 

這是HTML5的事情雖然不能與現代的瀏覽器,其他瀏覽器

var lastValue = ''; 
$("#total_amt").on('change keyup paste', function() { 
    if ($(this).val() != lastValue) { 
     lastValue = $(this).val(); 
     calert("Handler for .change() called."); 
    } 
}); 
+0

<<這是HTML5的事情,雖然不能與現代的瀏覽器,其他瀏覽器>>你的意思是現代的瀏覽器將工作:)因爲IE9 –

+0

很好的支持,我不知道如果它支持這就是爲什麼:) –

+1

BTW,oninput不會被解僱的程序改變值 –

2

你不能。最好的解決方案是在您改變數值並自己掛鉤時提出自己的事件。事情是這樣的:

// after changing the value in code: 
$('#total_amt').val(newValue).trigger('dynamicChange'); 

// event hook 
$("#total_amt").on("change dynamicChange", function() { 
    alert("Handler for .change() called."); 
}); 
+1

的確,儘管我個人不喜歡觸發本地事件,但我總是觸發我自己的行爲,以確切瞭解發生了什麼以及什麼時候發生了什麼。 –

+0

我在這裏同意,但我更喜歡使用triggerHandler甚至改變該事件不會冒泡反正 –

+0

那麼有沒有辦法做到這一點,而不改變原來的代碼嗯 – user794846