0

我的 HTML 结构:

<div class="pricesection">
        <label id="productPrice">
        <strong>
        <span id="totalprice"> 129,00</span>
        <span>$</span>
        </strong>
        </label>
        <input type="text" value="1" name="am" id="quantity">
        <button class="submitbtn" type="submit">add to Cart</button>
</div>

我的 JS 代码:

$('#quantity').keyup(function(){
  $('#quantity').each(function () {  
  var qty = $('#quantity').val();
  var price = $('#totalprice').val();
  var total = price * qty;
  });

  $('#totalprice').html(total);
});

找了很多例子,不合适。:-(

输入数量后,项目价格将自动更新。如果为“0”、字母、“空”或取消后必须恢复原价。

我总是得到“0”值回来!

我非常感谢任何帮助!

4

5 回答 5

0
   var price = $('#totalprice').val();//this is wrong!!!

获取 html跨度。不是值

var price = $('#totalprice').text();//this is the correct syntax

所以,你的代码变成了——:

  $('#quantity').keyup(function () {
        var qty = $('#quantity').val();
        var price = parseInt($('#totalprice').text()); //or $('#totalprice').html()
        var total = price * qty;
        $('#totalprice').html(total);
    });
于 2013-07-17T12:43:47.493 回答
0

试试这个........HTML

<div class="pricesection">
        <input type="text" id="productPrice"/>
        <strong>
        <span id="totalprice"> 129,00</span>
        <span>$</span>
        </strong>
        <input type="text" value="1" name="am" id="quantity">
        <button class="submitbtn" type="submit">add to Cart</button>
</div>

...... JS.......

$('#quantity').keyup(function(){
  var qty = $('#quantity').val();
  var price = $('#productPrice').val();
  var total = price * qty;

  $('#totalprice').html(total);
});
于 2013-07-17T12:47:10.270 回答
0

为什么有一个循环#quantity?你不需要那个。试试下面的代码。

$('#quantity').keyup(function () {
    var qty = $('#quantity').val();
    var price = parseInt($('#totalprice').text());
    var total = price * qty;
    $('#totalprice').html(total);
});

注意parseInt($('#totalprice').text()); .val()不适用于 span,因此您必须使用.text()并解析 int 中的结果

于 2013-07-17T12:48:50.203 回答
0

尝试

var $totalprice = $('#totalprice');
var price = parseInt($.trim($totalprice.text()).replace(',', '.'));
$totalprice.data('totalprice', price);
$('#quantity').keyup(function(){
    var qty = this.value;
    var price = $totalprice.data('totalprice');
    var total = price * qty;

    $totalprice.html(total ? total : price);
});

注意:数字格式未完成

于 2013-07-17T12:58:06.350 回答
0

您的第一个问题是totalprice跨度,因此它没有.val()功能(仅用于输入),请.text()改用。

span 的内容目前有一个逗号,不会自动解析成数字。您需要使用parseFloat(),并且需要使用小数点,而不是逗号。

parseFloat("129,50")是 129
parseFloat("129.50")是 129.50

其次,您正在each对数量字段进行处理,但只有一个。也许您希望将来使用它(在这种情况下,您应该使用类而不是 ID),但是这里有一些 JS 应该实现您想要的功能并修复您的错误(未经测试):

$('#quantity').keyup(function(){
    var qty = $('#quantity').val();
    if (qty && qty > 0){
        var price = parseFloat($('#totalprice').text());
        var total = price * qty;
        $('#totalprice').text(total);
    }
    else{
        //Find a better way of restoring this value
        $('#totalprice').text("129.50");
    }
});

希望这可以帮助。:)

于 2013-07-17T12:59:57.513 回答