views:

56

answers:

1

Hi,

The invoice input values which hold the totals of invoice line items that get updated via JS return a NULL value when they are submitted.

<span class="sublabel">Subtotal</span><input type="text" class="total-box" id="product-subtotal" readonly="true" />
<span class="sublabel">Tax</span><input type="text" class="total-box" id="product-tax" readonly="true" />
<span class="sublabel">Total</span><input type="text" class="total-box" id="order-total" readonly="true" />

The JS

function calcProdSubTotal() {

 var prodSubTotal = 0;

 $(".row-total-input").each(function(){

  var valString = $(this).val() || 0;

  prodSubTotal += parseInt(valString);

 });

 $("#product-subtotal").val(prodSubTotal);

 };

function calcTaxTotal() {

 var taxTotal = 0;
 //var taxAmount = 10; 
 var taxAmount = $("#salesTaxAmount").val() || 0;

 var productSubtotal = $("#product-subtotal").val() || 0;

 var taxTotal = parseInt(productSubtotal) * parseInt(taxAmount) / 100;
 var taxTotalNice = taxTotal;
 $("#product-tax").val(taxTotalNice);

};

function calcOrderTotal() {

 var orderTotal = 0;

 var productSubtotal = $("#product-subtotal").val() || 0;
 var productTax = $("#product-tax").val() || 0;

 var orderTotal = parseInt(productSubtotal) + parseInt(productTax);
 var orderTotalNice = "$" + orderTotal;

 $("#order-total").val(orderTotalNice);

};



$(function(){
 $('.row-total-input').each(
  function( intIndex ){
   $('.invAmount').livequery('blur', function() {
     var $this = $(this);
     var amount = $this.val();

     var qty = $this.parent().find('.invQty').val(); 

     if ( (IsNumeric(amount)) && (amount != '') ) {           
      var rowTotal = qty * amount;   
      $this.css("background-color", "white").parent().find(".row-total-input").val(rowTotal); 
     } else {        
      $this.css("background-color", "#ffdcdc");                     
     };              
     calcProdSubTotal(); 
     calcTaxTotal()
     calcOrderTotal();
   });
  }
 );
});

I originally had the inputs set as disabled however I have changed them to readonly because disabled fields can't be submitted.

What am i missing?

Thanks in advance.

+3  A: 

You haven't set a name-attribute on your <input />s, so PHP can't access their values, and returns nothing when you look for $_POST['product-tax']. If you have set error_reporting to E_ALL, you should see a notice telling you you are trying to access an undefined index on the $_POST array.

Douwe Maan
Good call! <comment length filler text>
Wayne Koorts
Haha and I had been staring at that for so long trying to work it out, thanks
Tristan