Цикл по идентификатору и каждой функции - PullRequest
0 голосов
/ 27 марта 2011

Я использую функцию JQUERY EACH для динамического суммирования 12 значений текстового поля с классом "txt" с этим кодом:

<script>
    $(document).ready(function(){

        //iterate through each textboxes and add keyup
        //handler to trigger sum event
        $(".txt").each(function() {

            $(this).keyup(function(){
                calculateSum();
            });
        });

    });

    function calculateSum() {

        var sum = 0;
        //iterate through each textboxes and add the values
        $(".txt").each(function() {

            //add only if the value is number
            if(!isNaN(this.value) && this.value.length!=0) {
                sum += parseFloat(this.value);
                }

        });

        $("#sum").html(sum);
</script>

Я хочу создать 4 промежуточных итога, рассчитанных динамически, используя каждое из 3 значений текстового поля. Я добавил 4 разных идентификатора каждому в моей форме. Как я могу использовать функцию выше для динамического вычисления промежуточной суммы для текущего идентификатора. Идентификатор диапазона, который получает результат, называется «ID_SUM» (идентификатор должен быть динамическим в соответствии со значением идентификатора измененного текстового поля) ?? Большое спасибо.

1 Ответ

0 голосов
/ 28 марта 2011

Я нашел решение ... ID уникален, поэтому он не работает. Я использовал имя атрибута так:

<script>
    $(document).ready(function(){

        //iterate through each textboxes and add keyup
        //handler to trigger sum event
        $(".txt").each(function() {

            $(this).keyup(function(){
            calculateSum($(this).attr("name"));
            });
        });

    });

    function calculateSum(groupe) {

        var sum = 0;
        var subtotal = 0
        //iterate through each textboxes and add the values
        $(".txt").each(function() {

            //add only if the value is number
            if(!isNaN(this.value) && this.value.length!=0) {
                sum += parseFloat(this.value);
                }

        });
        //.toFixed() method will roundoff the final sum to 2 decimal places : $("#sum").html(sum.toFixed(2))
        $("#sum").html(sum);

        $('input[name="' + groupe + '"]').each(function() {

            //add only if the value is number
            if(!isNaN(this.value) && this.value.length!=0) {
                subtotal += parseFloat(this.value);
                }

        });
        //.toFixed() method will roundoff the final sum to 2 decimal places : $("#sum").html(sum.toFixed(2))
        $("#" + groupe + "_SUM").html(subtotal);

    }
</script>
...