Как я могу рассчитать сумму значений переключателей, используя jQuery? - PullRequest
4 голосов
/ 25 августа 2009

Я пытаюсь создать форму со множеством групп, содержащих много переключателей. Когда пользователь выбирает кнопку, я хотел бы рассчитать сумму каждого выбранного значения переключателя и показать эту сумму пользователю.

Я нашел плагин для jQuery, который будет выполнять вычисления, этот плагин использует атрибут имени кнопок для расчета. Например, он будет суммировать значения всех кнопок с именем sum.

До сих пор я пробовал два способа настройки: в первом методе я создаю скрытое поле для каждой группы, в котором содержится сумма выбранных значений внутри нее, это скрытое поле получает значение, но проблема заключается в том, что общее значение не будет обновляться, когда пользователь выбирает кнопку. Мой код выглядит так:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <title>Untitled Document</title>
        <script src="jquery.js" type="text/javascript">
        </script>
        <script src="calc.js" type="text/javascript">
        </script>
        <script src="calc_f.js" type="text/javascript">
        </script>
        <script type="text/javascript">
            function DisplayPrice(price){
                $('#spn_Price').val(price);
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
            <input type="hidden" id="spn_Price" name="sum" value="">
            <br>
            <input id="rdo_1" type="radio" value="159" name="price" onclick="DisplayPrice(this.value);">
            <br>
            <input id="rdo_2" type="radio" value="259" name="price" onclick="DisplayPrice(this.value);">
            <br>
            <input type="text" name="totalSum" id="totalSum" value="" size="2" readonly="readonly">
        </form>
    </body>
</html>

В этом коде тег ввода с именем totalSum - это то место, где будет обновляться значение, но оно не будет обновляться при смене кнопок.

Как я уже говорил, причина, по которой я использую скрытое поле, заключается в том, чтобы удерживать промежуточные итоги каждой группы. Он имеет имя sum, которое указывает плагину, что его следует добавить к другим.

Я не знаю, является ли это правильным способом для этого, я пытался изменить атрибут имени кнопок, когда пользователь нажимает на них, на sum, но это тоже не сработало!

Вот адрес плагина: http://www.pengoworks.com/workshop/jquery/calculation/calculation.plugin.htm

Как я могу это сделать?

Ответы [ 2 ]

21 голосов
/ 25 августа 2009

плагин щмугин. Избавьтесь от своего клика и попробуйте это:

$("input[type=radio]").click(function() {
    var total = 0;
    $("input[type=radio]:checked").each(function() {
        total += parseFloat($(this).val());
    });

    $("#totalSum").val(total);
});
2 голосов
/ 25 августа 2009

Документ без названия

    <script type="text/javascript">
        function DisplayPrice(price){
            var val1 = 0;
            for( i = 0; i < document.form1.price.length; i++ ){
                if( document.form1.price[i].checked == true ){
                    val1 = document.form1.price[i].value;
                }
            }

            var val2 = 0;
            for( i = 0; i < document.form2.price2.length; i++ ){
                if( document.form2.price2[i].checked == true ){
                    val2 = document.form2.price2[i].value;
                }
            }

            var sum=parseInt(val1) + parseInt(val2);
            document.getElementById('totalSum').value=sum;
        }
    </script>
</head>
<body>
    Choose a number:<br>
    <form name="form1" id="form1" runat="server">
        <br>
        <input id="rdo_1" type="radio" value="159" name="price" onclick="DisplayPrice(this.value);">159
        <br>
        <input id="rdo_2" type="radio" value="259" name="price" onclick="DisplayPrice(this.value);">259
        <br>
    </form>

    Choose another number:<br>
    <form name="form2" id="form2" runat="server">
        <br>
        <input id="rdo_1" type="radio" value="345" name="price2" onclick="DisplayPrice(this.value);">345
        <br>
        <input id="rdo_2" type="radio" value="87" name="price2" onclick="DisplayPrice(this.value);">87
        <br>
    </form>
    <input type="text" name="totalSum" id="totalSum" value="" size="2" readonly="readonly">


</body>

Код выше будет динамически суммировать проверенные значения из обеих групп. parseInt преобразует в целые числа. В противном случае используйте parseFloat.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...