3

在 html 页面中,如果我使用鼠标从下拉列表中选择一个项目(select 和 option html 元素),则将onchange触发该事件。但是,如果我使用 Javascript 来更改selectedindex选择元素的,则onchange不会触发该事件。

这两个动作有何不同?

如何触发onchange事件(不是通过显式调用selectElement.onchange())?

4

1 回答 1

1

看到这个: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 更改值时重复功能,您应该创建一个执行您想要的功能并在适当的实例中调用它的函数。

于 2012-09-19T16:03:54.547 回答