如何设置选择元素的selectedindex与使用鼠标选择一个项目不同?

时间:2012-09-19 15:20:13

标签: javascript html dom javascript-events onchange

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

这两种行为有何不同?

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

1 个答案:

答案 0 :(得分: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更改值时重复功能,则应创建一个能够执行所需操作并在适当实例中调用它的函数。