2013-07-08 88 views
0

我想要使用jQuery計算物品稅。我使用的CRM有一些名爲tag的內容,它們以{tag_something}的形式動態地將信息讀取到網頁上。我想使用jQuery更新產品的價格。 (稍後將用於州特定稅收)。我擁有的代碼正在改變原始價格,但不是將其更改爲需要的值,而是默認爲頁面上的「0」。任何想法或建議將不勝感激。我已經建立了這樣做的產品是:http://www.bemidjisportsonline.com/accessories/backpacks/klim-nac-pakjQuery:數字不更新,更改爲0

<!-- taxable items --> 
jQuery(document).ready(function() { 
    initUpdateTax(); 
} 
); 
function initUpdateTax() { 
var taxable = '{tag_taxcode}'; 
var saleprice = '{tag_saleprice}'; 
if (taxable == "Accessories"){ 
    $('#taxable').text(function(saleprice) { 
     return Math.round(parseInt(saleprice + (saleprice * 0.06875)); 
    }); 
} 
} 
+0

現在是不會改變的數量都沒有。我知道這是針對正確的因素。不知道爲什麼數字沒有正確更新。 – Phorden

+0

請發佈相關的HTML代碼。 – Rafael

回答

0

呼叫在change事件文本框的再次方法..

$('.productTextInput').on('change', function() { 
    initUpdateTax(); 
}); 

你似乎調用該方法只有當頁面加載首次。你需要,只要輸入框變爲再次調用它..

更好

jQuery(document).ready(function() { 
    // Change event 
    $('.productTextInput').on('change', initUpdateTax) 
     .change(); // Trigger the change on DOM ready 
}); 

function initUpdateTax() { 
    var saleprice = '{tag_saleprice}'; 
    // Find the corresponding element wherein the 
    // total price has to be shown 
    var $total = $(this).closest('li') 
     .prevAll('.price').first().find('strong'); 

    $total.text(function (saleprice) { 
     return Math.round(parseInt(saleprice + (saleprice * 0.06875))); 
    }); 

} 
0

跟着你發佈的鏈接,這是正在執行的代碼是:

function initUpdateTax() { 
    var taxable = 'Accessories'; 
    var saleprice = '$95.99'; 
    if (taxable == "Accessories"){ 
     $('#taxable').text(function(saleprice) { 
      return Math.round(parseInt(saleprice + (saleprice * 0.06875)); 
     }); 
    } 
    else { 
    } 
} 

的價值salesprice不是有效的數字,因此乘法saleprice * 0.06875的結果爲NaN。在return表達式中還有一個缺失的括號。

此外,parseIntMath.round操作的用法沒有多大意義,因爲從第一個返回的值是一個整數,當它本身是舍入時。關於價值的稅收申請可以用以下更簡潔(和恕我直言明確)的方式表示saleprice * 1.06875

這是函數的版本已經做了你所期望的:

function initUpdateTax() { 
    var taxable = '{tag_taxcode}'; 
    if (taxable == "Accessories"){ 
     var saleprice = $('#taxable').text(); 
     var price = parseFloat(saleprice.replace('$', '')) * 1.06875; 
     $('#taxable').text('$' + price.toFixed(2)); 
    } 
    else { 
    } 
}