2

这是我要创建此表单的代码,如果您输入了价格、数量和折扣百分比等所有信息,并且折扣金额显示为小计,总折扣金额为折扣金额除以 100,然后乘以小计。小计是通过将价格乘以数量得出的。总数是通过将小计乘以折扣得出的,正如您所看到的,我已经完成了表格,并且我几乎拥有 javascript 上的所有代码,但似乎我无法使其与折扣一起使用。请帮忙 !

JS:

$('#CAT_Custom_490527').keyup(function () {
    var quantity = $("#CAT_Custom_490527").val();
    var iPrice = $("#CAT_Custom_490526").val();
    var subtotal = quantity * iPrice;
    $("#CAT_Custom_491101").val(subtotal);
    var x = $("#CAT_Custom_491074").val();
    var y = 100
    var division = x / y
    var multi = division * subtotal
    $("CAT_Custom_491074").val(division);
    var total = subtotal * multi;
    $("#CAT_Custom_490531").val(total);
    // sets the total price input to the quantity * price
});

HTML:

<tr>
    <td>
        <label for="CAT_Custom_490526">Precio <span class="req">*</span>
        </label>
        <br />
        <input type="text" maxlength="255" name="CAT_Custom_490526" id="CAT_Custom_490526" class="cat_textbox" />
    </td>
</tr>
<tr>
    <td>
        <label for="CAT_Custom_490527">Cantidad <span class="req">*</span>
        </label>
        <br />
        <input type="text" maxlength="255" name="CAT_Custom_490527" id="CAT_Custom_490527" class="cat_textbox" />
    </td>
</tr>
<tr>
    <td>
        <label for="CAT_Custom_491074">%Descuento</label>
        <br />
        <input type="text" maxlength="255" name="CAT_Custom_491074" id="CAT_Custom_491074" class="cat_textbox" />
    </td>
</tr>
<tr>
    <td>
        <label for="CAT_Custom_491218">Descuento</label>
        <br />
        <input type="text" maxlength="255" name="CAT_Custom_491218" id="CAT_Custom_491218" class="cat_textbox" />
    </td>
</tr>
<tr>
    <td>
        <label for="CAT_Custom_491101">Subtotal</label>
        <br />
        <input type="text" maxlength="255" name="CAT_Custom_491101" id="CAT_Custom_491101" class="cat_textbox" />
    </td>
</tr>
<tr>
    <td>
        <label for="CAT_Custom_490531">Total <span class="req">*</span>
        </label>
        <br />
        <input type="text" maxlength="255" name="CAT_Custom_490531" id="CAT_Custom_490531" class="cat_textbox" />
    </td>
</tr>
4

3 回答 3

0

您错过了文本框 ID 中的“#”,它应该是

$("#CAT_Custom_491074").val(division);

这将解决您的问题。

于 2013-06-18T16:15:12.803 回答
0

你的数学不正确

所以如果我在折扣框中输入 50,x = 50,y = 100,

  1. division = x/y= 50/100=0.5
  2. 说小计 = 100 美元,然后multi = subtotal * division= $100 * 0.5=$50
  3. 那么,total = subtotal * multi= $100 * $50=$5000

你不应该乘以小计 * 多。

你为什么不这样做:

total = subtotal * (1 - discount/100)

本质上(1 - 折扣/100)是您的乘数。如果我输入 12 进行折扣,它将变为:

total = ($100) * (1 - 12/100), 或($100) * 0.88, 或$88

或者

只需将最后一行代码更改为:

total = subtotal - multi

multi 不持有乘数,它持有您想要扣除总数的金额。

于 2013-06-18T16:20:12.103 回答
0

我看到的问题点:

  1. 不正确的数学(感谢krb686 的回答- 请为该答案投票,因为它很有帮助)
  2. 选择器中的错字 - 缺失#(感谢Kundan Singh Chouhan的回答 - 请为该答案投票,因为它很有帮助)
  3. 更正上面的错字后,您现在正在覆盖折扣百分比。我敢打赌,您的意思是用于折扣值字段:#CAT_Custom_491218. 如果您使用有意义的 id 而不是自动生成的 id,这将更容易提前检测到。
  4. 您仅在数量字段更改时才评估此功能。例如,如果您更改折扣百分比,则不会重新评估小计和总计。
  5. 您只是在观看键盘事件。如果仅使用鼠标更改值(复制/粘贴或拖放),则不会重新评估小计和总计。还处理oninput(html5 的新事件)和onchange.

要绑定到所有输入并检测更多事件,而不仅仅是keyup

$("input").on("input keyup change", function () {
    ...

应用了上述所有更改的演示

于 2013-06-18T17:36:28.773 回答