0

以前にこの質問を投稿しましたが、少し違いました。私は新しいアプローチを取っていますが、機能していないようです。どこが間違っているのかを理解するのに助けが得られるかどうか疑問に思っていました。これの目的は、値を入力している間、またはテキスト ボックス

ASP からフォーカスを外した直後に計算することです。

 <asp:TextBox runat="server" ID="txtAmount1" CssClass="narrow"  text="0.00"  ClientIDMode="Static" class="PAmount"  /> 
 <asp:TextBox runat="server" ID="txtAmount2" CssClass="narrow"  text="0.00"  ClientIDMode="Static" class="PAmount"  /> 
 <asp:TextBox runat="server" ID="txtAmount3" CssClass="narrow"  text="0.00"  ClientIDMode="Static" class="PAmount"  /> 
  <asp:Literal ID="ltlGTotal" runat="server" Text="0.00" ></asp:Literal>
  <asp:TextBox runat="server" ID="txtTotalCost" CssClass="narrow"/>

JS:

  $('.PAmount').keyup(function () { 
    var total;
    for (var i = 0; i < $(this).length; ++i) {
        total += parseInt($(this)[i].val());
    }
    $('#ltlGTotal').val(total);
    $('#txtTotalCost').val(total);
});
4

4 に答える 4

1

Total Textbox を編集可能にすることはお勧めしません。

その上、ユーザーに合計に値を入力させる意味はありません。

たとえば、1+2+3=8 (合計は正しくありません)。

参考CssClass="narrow"までに: と の両方を持つことはできませんclass="PAmount"。適切な形式ではありません。

<asp:TextBox runat="server" ID="txtAmount1" CssClass="narrow" 
  Text="0.00" ClientIDMode="Static"/>
<asp:TextBox runat="server" ID="txtAmount2" CssClass="narrow" 
  Text="0.00" ClientIDMode="Static"/>
<asp:TextBox runat="server" ID="txtAmount3" CssClass="narrow" 
  Text="0.00" ClientIDMode="Static"/>
<asp:Label ID="ltlGTotal" runat="server" Text="0.00" ClientIDMode="Static" />
<asp:TextBox runat="server" ID="txtTotalCost" ClientIDMode="Static" />
<asp:DropDownList runat="server" ID="DropDownList1" AutoPostBack="True">
    <asp:ListItem Text="One" Value="1"/>
    <asp:ListItem Text="Two" Value="2"/>
</asp:DropDownList>
<script>
    $(document).ready(function () {
        $('#ltlGTotal').html($('#txtTotalCost').val());

        $('.narrow').keyup(calculate);

        $('.total').keyup(calculate);

        function calculate() {
            var total = 0;
            $('.narrow').each(function () {
                if ($(this).val().length > 0) {
                    total += parseInt($(this).val());
                }
            });
            $('#ltlGTotal').html(total);
            $('#txtTotalCost').val(total);
        }
    });
</script>
于 2013-03-28T18:41:08.543 に答える
1

このコードを試してください

$('.PAmount').keyup(function () {
    var total=0;
    $('.PAmount').each(function () {
        total += parseInt($(this).val());
    });     
    $('#ltlGTotal').val(total);
    $('#txtTotalCost').val(total);
});
于 2013-03-29T05:33:18.837 に答える
1

これが私がすることです:

var $amountBoxes = $(":text.PAmount"),
    $grandTotal = $("#ltlGTotal"),
    $totalCost = $("#txtTotalCost");

$amountBoxes.on("keyup change", calculateTotal);

function calculateTotal()
{
    var total = 0;
    $amountBoxes.each(function () 
    {
        total += parseInt($(this).val());
    });
    $grandTotal.text(total.toString());
    $totalCost.val(total.toString());
};

ここをクリックして、動作中の jsFiddle デモを表示します

于 2013-03-28T18:30:20.253 に答える
0

次のように「狭い」css クラスを使用して、変更イベントを追加できます。

$('.narrow').change(function () {
  var total;
   for (var i = 0; i < $(this).length; ++i) {
      total += parseInt($(this)[i].val());
   }
   $('#ltlGTotal').val(total);
  $('#txtTotalCost').val(total);
});

それが役に立てば幸い

于 2013-03-28T18:08:56.840 に答える