在html页面中,如果我使用鼠标从下拉列表中选择一项(select和option html元素),则将触发onchange
事件。但是,如果我使用Javascript更改选择元素的selectedindex
,则不会触发onchange
事件。
这两个动作有何不同?
如何触发onchange
事件(不是通过显式调用selectElement.onchange()
来触发?]
查看此:http://jsfiddle.net/9xe9b/
$("#currency").change(function(){
var val = $(this).val();
$(this).val(formatCurrency(val));
});
$("#infinite").change(function(){
var val = $(this).val();
$(this).val(formatCurrency(val));
$(this).change(); // simulate the change event.
});
function formatCurrency(num) {
num = isNaN(num) || num === '' || num === null ? 0.00 : num;
return parseFloat(num).toFixed(2);
}
如果在第二个文本框中输入值并弹出打开控制台,则会看到此错误:Uncaught RangeError: Maximum call stack size exceeded
如果更改javascript中的值导致触发了相关事件,我们将不得不担心。无限循环!
因此,如果通过UI或javascript更改值时需要重复功能,则应创建一个可以执行所需功能的函数,并在适当的实例中调用它。