在 html 页面中,如果我使用鼠标从下拉列表中选择一个项目(select 和 option html 元素),则将onchange
触发该事件。但是,如果我使用 Javascript 来更改selectedindex
选择元素的,则onchange
不会触发该事件。
这两个动作有何不同?
如何触发onchange
事件(不是通过显式调用selectElement.onchange()
)?
在 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 更改值时重复功能,您应该创建一个执行您想要的功能并在适当的实例中调用它的函数。