3

htmlページで、マウスを使用してドロップダウンリスト(selectおよびoption html要素)から項目を選択すると、onchangeイベントが発生します。しかし、Javascriptを使用しselectedindexてselect要素のを変更すると、onchangeイベントは発生しません。

これらの2つのアクションはどのように異なりますか?

How can I trigger the onchange event (not by calling selectElement.onchange() explicitly)?

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);
}

2 番目のテキスト ボックスに値を入力してコンソールを開くと、次のエラーが表示されます。 Uncaught RangeError: Maximum call stack size exceeded

これは、javascript の値を変更すると、関連するイベントが発生した場合に心配する必要があることです。無限ループ!

そのため、UI または JavaScript を介して値を変更するときに機能を繰り返す必要がある場合は、目的の機能を実行する関数を作成し、適切なインスタンスで呼び出す必要があります。

于 2012-09-19T16:03:54.547 に答える