Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Подсчет заполненных текстовых полей (http://www.flasher.ru/forum/showthread.php?t=119591)

Anoxia 24.12.2008 17:49

Подсчет заполненных текстовых полей
 
Подскажите как сосчитать поля с числами
тоесть есть к примеру 4 поля (x1, x2, x3, x4)
иногда заполняются все, а иногда нет.

К примеру я хочу посчитать формулу (суммировать все поля) и умножить на количество полей, игнорируя незаполненные
что то вроде такого:

заполнил 3 поля
x1+x2+x3*(количество заполненых полей)

заранее благодарен:)

Kuruki 24.12.2008 18:26

Код AS1/AS2:

var textFieldsNum:Number = 4;// кол-во полей
var total:Number = countTotal(); // сумма полей * на их кол-во
 
function countTotal():Number {
        var inputedNums:Array = [];// контейнер для заполненных
        for (var i:Number = 1; i<=textFieldsNum; i++) {
                var inputedText:String = this['textField'+i].text;
                if (inputedText != "") {//если не пустое
                        inputedNums.push(parseInt(inputedText));// запоминаем и заодно приводим в число
                }
        }
        // подсчитываем
        var totalSum:Number = 0;
        for (var j:Number = 0; j<inputedNums.length; j++) {
                totalSum += inputedNums[j];
        }
        return totalSum*inputedNums.length;
}


Mnilionic 24.12.2008 20:22

Kuruki, почему бы вместо "запоминания" сразу не складывать? :)
но с другой стороны сам люблю, когда мухи отдельно...

Kuruki 24.12.2008 20:32

Код AS1/AS2:

var textFieldsNum:Number = 4;// кол-во полей
var total:Number = countTotal(); // сумма полей * на их кол-во
 
function countTotal():Number {
        var totalSum:Number = 0;
        var filledFieldsCounter:Number = 0;
        for (var i:Number = 1; i<=textFieldsNum; i++) {
                var inputedNum:String = this['textField'+i].text;
                if (inputedNum != "") {//если не пустое
                        totalSum += parseInt(inputedNum);
                        filledFieldsCounter++;
                }
        }
 
        return totalSum*filledFieldsCounter;
}


Mnilionic 24.12.2008 20:50

Код AS1/AS2:

        ...
        var num = parseInt(inputedNum);
        if ( !isNaN(num) ) {
                totalSum += num;
                ...


Kuruki 24.12.2008 20:57

Я учитывал, что в поле можно ввести только числа и точку
UPD: а, нет, всеравно проверка нужна.

Mnilionic 24.12.2008 21:12

Цитата:

Как говорят у нас в Братстве: лучше перебдеть, чем недобдеть.
:)
там как раз из-за точки и можно намутить NaN-ов )))

Anoxia 25.12.2008 08:10

сегодня буду пробовать
спасибо заранее всем огромное)

Добавлено через 4 часа 30 минут
еще бы понять как такое заставить обрабатывать мои поля
которые изначально уже есть с присвоеными именами x1, x2, x3...
тоесть я их не создаю через createTextField

не могу понять как результат вывести в мое отдельное поле "itog"

Mnilionic 25.12.2008 18:36

строку
Код:

var inputedNum:String = this['textField'+i].text;
замените на
Код:

var inputedNum:String = this['x'+i].text;

Anoxia 26.12.2008 10:13

Вложений: 1
спасибо. уже что то

хоть и пока не работает)
выложу на всякий исходник чтобы понятно было что я хочу сделать

осталось разобратся как присвоить результат переменной itog


Часовой пояс GMT +4, время: 11:47.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.