-3

Javascript/Jqueryなどについては何も知りませんが、Googleと人々の回答を使用して、次を使用してx個のフィールドを一緒に追加し、小計ボックスに表示しています。

次のスクリプトはループするため、1 が表示されるたびに各ループ カウントがインクリメントされます。各カウントの合計が表示されることを意味します。数値を編集すると、そのセクションの合計のみが更新されます。

var $form = $('#locations'),
    $summands1 = $form.find('.addme1'),
    $sumDisplay1 = $('#incoming1');

$form.delegate('.addme1', 'change', function () {
    var sum = 0;
    $summands1.each(function () {
        var value = Number($(this).val());
        if (!isNaN(value)) sum += value;
    });

    $sumDisplay1.val(sum);

    $summandsa1 = $form.find('.addmea1'),
    $sumDisplaya1 = $('#outgoing1');
});
$form.delegate('.addmea1', 'change', function () {
    var sum = 0;
    $summandsa1.each(function () {
        var value = Number($(this).val());
        if (!isNaN(value)) sum += value;
    });

    $sumDisplaya1.val(sum);
});

これはフォームの例です

    <form id="locations" method='post' action=''>Loop 1
        <br>
        <input type="text" value="75" name="" class="addme1">
        <input type="text" value="150" name="" class="addmea1">
        <br>
        <input type="text" value="75" name="" class="addme1">
        <input type="text" value="150" name="" class="addmea1">
        <br>
        <input type="text" value="75" name="" class="addme1">
        <input type="text" value="150" name="" class="addmea1">
        <br>
        <input type="text" value="75" name="" class="addme1">
        <input type="text" value="150" name="" class="addmea1">
        <br>
        <input type="text" value="300" name="" id="incoming1">
        <input type="text" value="600" name="" id="outgoing1">
        <br>Loop 2
        <br>
        <input type="text" value="75" name="" class="addme2">
        <input type="text" value="150" name="" class="addmea2">
        <br>
        <input type="text" value="75" name="" class="addme2">
        <input type="text" value="150" name="" class="addmea2">
        <br>
        <input type="text" value="75" name="" class="addme2">
        <input type="text" value="150" name="" class="addmea2">
        <br>
        <input type="text" value="75" name="" class="addme2">
        <input type="text" value="150" name="" class="addmea2">
        <br>
        <input type="text" value="300" name="" id="incoming2">
        <input type="text" value="600" name="" id="outgoing2">
        <br>
        <br>
        <br>Total :
        <input type="text" value="600" name="" id="totalin">
        <input type="text" value="1200" name="" id="totalout"><br>
Profit :
        <input type="text" value="600" name="" id="profit">
    </form>

私が必要としているのは、incoming1、incoming2、およびそこにある他のincomingx値を追加し、totalinに格納する方法です.outgoing1,2etcと同様に、totalout-totalinで利益を更新します。そのため、値が現在の設定から変更された場合、他のすべてのフィールドが自動的に更新されます。

誰でもこれを手伝ってもらえますか?

ここでフィドル:http://jsfiddle.net/Gt473/3/ jsfiddleでスクリプトを繰り返す方法がわからないため、ループ2は機能しませんが、htmlページでは機能することに注意してください。

4

1 に答える 1

0

あなたの要件が何であったかはわかりません.しかし、これは私の見解です.私が投稿した答えは、あなたが探しているものではありません.また、以下のコードはより適切に記述できますが、それはあなたが調査するためのものです.

<form id="locations" method='post' action=''>
        <fieldset class="level">
            <legend>Loop1</legend>
            <label>Incoming</label>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <label>Outgoing</label>
            <br>
            <input type="text" value="" name="" class="incoming">
            <input type="text" value="" name="" class="outgoing">
            <br>
            <input type="text" value="" name="" class="incoming">
            <input type="text" value="" name="" class="outgoing">
            <br>
            <input type="text" value="" name="" class="incoming">
            <input type="text" value="" name="" class="outgoing">
            <br>
            <input type="text" value="" name="" class="incoming">
            <input type="text" value="" name="" class="outgoing">
            <br>
            <input type="text" value="" name="" class="subIncoming" disabled>
            <input type="text" value="" name="" class="subOutgoing" disabled>   
        </fieldset>
        <fieldset class="level">
            <legend>Loop2</legend>
            <label>Incoming</label>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <label>Outgoing</label>
            <br>
            <input type="text" value="" name="" class="incoming">
            <input type="text" value="" name="" class="outgoing">
            <br>
            <input type="text" value="" name="" class="incoming">
            <input type="text" value="" name="" class="outgoing">
            <br>
            <input type="text" value="" name="" class="incoming">
            <input type="text" value="" name="" class="outgoing">
            <br>
            <input type="text" value="" name="" class="incoming">
            <input type="text" value="" name="" class="outgoing">
            <br>
            <input type="text" value="" name="" class="subIncoming" disabled>
            <input type="text" value="" name="" class="subOutgoing" disabled>   
        </fieldset>
        <fieldset class="level">
            <legend>Loop3</legend>
            <label>Incoming</label>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <label>Outgoing</label>
            <br>
            <input type="text" value="" name="" class="incoming">
            <input type="text" value="" name="" class="outgoing">
            <br>
            <input type="text" value="" name="" class="incoming">
            <input type="text" value="" name="" class="outgoing">
            <br>
            <input type="text" value="" name="" class="incoming">
            <input type="text" value="" name="" class="outgoing">
            <br>
            <input type="text" value="" name="" class="incoming">
            <input type="text" value="" name="" class="outgoing">
            <br>
            <input type="text" value="" name="" class="subIncoming" disabled>
            <input type="text" value="" name="" class="subOutgoing" disabled>   
        </fieldset>
        <fieldset class="level">
            <legend>Loop4</legend>
            <label>Incoming</label>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <label>Outgoing</label>
            <br>
            <input type="text" value="" name="" class="incoming">
            <input type="text" value="" name="" class="outgoing">
            <br>
            <input type="text" value="" name="" class="incoming">
            <input type="text" value="" name="" class="outgoing">
            <br>
            <input type="text" value="" name="" class="incoming">
            <input type="text" value="" name="" class="outgoing">
            <br>
            <input type="text" value="" name="" class="incoming">
            <input type="text" value="" name="" class="outgoing">
            <br>
            <input type="text" value="" name="" class="subIncoming" disabled>
            <input type="text" value="" name="" class="subOutgoing" disabled>   
        </fieldset>
        <fieldset class="level">
            <legend>Loop5</legend>
            <label>Incoming</label>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <label>Outgoing</label>
            <br>
            <input type="text" value="" name="" class="incoming">
            <input type="text" value="" name="" class="outgoing">
            <br>
            <input type="text" value="" name="" class="incoming">
            <input type="text" value="" name="" class="outgoing">
            <br>
            <input type="text" value="" name="" class="incoming">
            <input type="text" value="" name="" class="outgoing">
            <br>
            <input type="text" value="" name="" class="incoming">
            <input type="text" value="" name="" class="outgoing">
            <br>
            <input type="text" value="" name="" class="subIncoming" disabled>
            <input type="text" value="" name="" class="subOutgoing" disabled>   
        </fieldset>
        <fieldset class="total">
            <legend>Total</legend>
            <label>Incoming</label>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <label>Outgoing</label>
            <br>
            <input type="text" value="" name="" id="totalIncoming" disabled>
            <input type="text" value="" name="" id="totalOutgoing" disabled>
        </fieldset>
        <fieldset>
            <legend>Profit</legend>
            <input type="text" value="" name="" id="profit" disabled>            
        </fieldset>
</form>

var $form = $('#locations'),
    $totalIncoming = $('#totalIncoming'),
    $totalOutgoing = $('#totalOutgoing'),
    $profit = $('#profit');

$form.on('input', '.level input', function () {
   var textBoxClass = $(this).attr('class'),
       $level = $(this).closest('.level'),
       $subTextBox = null,
       $totalTextBox = null,
       $textBoxes = null,
       $subTextBoxes = null,
       subSum = 0, 
       totalSum = 0;

    if(textBoxClass === 'incoming'){
        $textBoxes = $level.find('.incoming');
        $subTextBox = $level.find('.subIncoming');
        $totalTextBox = $('#totalIncoming');
        $subTextBoxes = $form.find('.subIncoming');
    }else{
        $textBoxes =$level.find('.outgoing');
        $subTextBox = $level.find('.subOutgoing');
        $totalTextBox = $('#totalOutgoing');
        $subTextBoxes = $form.find('.subOutgoing');
    }

    $textBoxes.each(function () {
        var value = Number($(this).val());
        if (!isNaN(value)) subSum += value;
    });

    $subTextBox.val(subSum);

    $subTextBoxes.each(function () {
        var value = Number($(this).val());
        if (!isNaN(value)) totalSum += value;
    });

    $totalTextBox.val(totalSum);

    $profit.val($totalIncoming.val() - $totalOutgoing.val())
 });
于 2013-09-26T12:53:11.717 に答える