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

问题描述 投票:3回答:1

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

这两个动作有何不同?

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

javascript html dom dom-events onchange
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更改值时需要重复功能,则应创建一个可以执行所需功能的函数,并在适当的实例中调用它。

© www.soinside.com 2019 - 2024. All rights reserved.