通过JS更新的表单输入不会被提交

时间:2009-11-15 06:50:27

标签: php javascript jquery forms codeigniter

包含通过JS更新的发票行项目总计的发票输入值在提交时返回NULL值。

<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" />

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();
            });
        }
    );
});

我最初将输入设置为已禁用,但我已将其更改为只读,因为无法提交已禁用的字段。

我缺少什么?

提前致谢。

1 个答案:

答案 0 :(得分:3)

您尚未在name上设置<input /> - 属性,因此PHP无法访问其值,并且在您查找$_POST['product-tax']时不会返回任何内容。如果您已将error_reporting设置为E_ALL,则会看到一条通知,告知您正在尝试访问$_POST数组上的未定义索引。