加载函数时更正Jquery语法

时间:2015-08-04 22:56:06

标签: javascript jquery

我在Jquery很糟糕,我重用了这段代码,有人设法让它运转起来。它需要做两件事

1)允许在页面加载后进行更改并正确获取总和和总计 2)加载预加载的表单值并在页面加载时计算它们。

我不得不复制1x .each和1x .live的两个函数(" keyup"以获得结果。有更简洁的方法吗?

$(document).ready(function() {
  var $k = jQuery.noConflict();

  $k.fn.sum = function() {
    var sum = 0;
    $k(this).each(function() {
      sum += parseFloat($k(this).val());
    });

    return sum;
  }

  $k(function() {


    $k('input[name^=quantity], input[name^=unitprice]').each(function() {
      var quantity = parseFloat($k(this).parent().find('input[name^=quantity]').val());
      var unitprice = parseFloat($k(this).parent().find('input[name^=unitprice]').val());
      $k(this).siblings('input[name^=linetotal]').val(quantity * unitprice);

      var sum = $k('input[name^=linetotal]').sum();

      $k('#subtotal').val(sum);
    });

    $k('input[name^=quantity], input[name^=unitprice]').live("keyup", function() {
      var quantity = parseFloat($k(this).parent().find('input[name^=quantity]').val());
      var unitprice = parseFloat($k(this).parent().find('input[name^=unitprice]').val());
      $k(this).siblings('input[name^=linetotal]').val(quantity * unitprice);

      var sum = $k('input[name^=linetotal]').sum();

      $k('#subtotal').val(sum);
    });
  });
});

1 个答案:

答案 0 :(得分:0)

您正在寻找.trigger('event')

试试这个:

$(function()
{
    $('input[name^=quantity], input[name^=unitprice]').on('keyup', function()
    {
        var parent = $(this).parent(),
            subtotal = 0,

            quantity = parseFloat(parent.find('input[name^=quantity]').val()),
            unitprice = parseFloat(parent.find('input[name^=unitprice]').val());

        $(this).siblings('input[name^=linetotal]').val(quantity * unitprice);

        $('input[name^=linetotal]').each(function()
        {
            subtotal += parseFloat($(this).val());
        });

        $('#subtotal').val(subtotal);
    })
    .trigger('keyup');
});