2014-12-01 22 views
0

所以我想通了如何通過jQuery更新價格,與單選按鈕:簡單的jQuery價格更新問題下拉列表VS單選按鈕

這裏是鏈接:http://jsfiddle.net/pcvr7h2b/5/

現在我遇到的問題是應用與下拉菜單完全相同的功能,所以「選項」值。我希望在下拉菜單中選擇尺寸時更改價格。

我在代碼中添加此:

$("option:selected").each(function() { 
    var value = $(this).attr("value"); 
    total += parseInt(value); 
}); 

試圖得到這個工作,但沒有運氣。有任何想法嗎?

謝謝!

+0

我看看你的代碼,風格也不是那麼好,如果我需要給你一個解決方案,我需要重寫一切。因此,我只提供一些建議。 1. calcTotal()函數可以計算一切的總量,然後有一個返回值。 2.你的選擇沒有對應於成本的價值。 3.最好有一個成本值的id,然後每次發生事件時使用id來更新成本值。 4如果您使用div或其他html標籤來安排您的html佈局應該會更好。 – 2014-12-02 00:50:15

+0

感謝您的建議。但是,在功能完備的情況下,沒有什麼重點。輸出只需要是一個臨時輸出。因爲所有其他的價格都是在ultracart的後端進行計算的。但是,是的選項沒有你看到的例子中的值,因爲這些選項的jquery不起作用。 Ultracart使用表格作爲基礎HTML,但是當分區功能完全正常時,分區將在以後添加到樣式中。 – Tyson 2014-12-02 01:51:42

回答

0

我不知道ultracart是什麼。 無論是ultracart,這裏是我將如何實現您的目的。 http://jsfiddle.net/matildayipan/01ekur6u/

function total(){ 
    var total = 0; 
    var opt3 = parseInt($("select[name='OptionValue3'] option:selected").val()); 
    var opt4 = parseInt($("select[name='OptionValue4'] option:selected").val()); 
    total = opt3 + opt4; 
    return total; 
} 

$(document).ready(function(){ 
    var num = total(); 
    $("#total").append(num); 

    $("select").on('change', function(){ 
      num=total(); 
      $("#total").html(num); 
    }); 

}); 

看看你是否可以合併給你的主代碼,並希望它爲你的目的。

+0

順便說一句,這是最好的呈現您的代碼風格很好,因爲它們很容易閱讀,並且人們可能會覺得更容易幫助你。 – 2014-12-02 03:04:43

+0

如果你正在尋找一個更簡單的例子,你可以在這裏找到它:http://jsfiddle.net/gjbKY/10/我可以整天看這些代碼,但由於某種原因,我無法弄清楚如何在選項上添加更改功能:選中。它獨立工作,但在添加輸入時不起作用:已選中 – Tyson 2014-12-02 23:53:51

0

我解決了這個問題。工作示例可以在這裏找到:http://jsfiddle.net/jnhxdztr/

$(document).ready(function(){ 
    //iterate through each textboxes and add keyup 
    //handler to trigger sum event 
    $(".add").each(function() { 
     $(this).bind("click keyup", function(){ 
      calculateSum(); 
     }); 
    }); 
}); 

function calculateSum() { 
    var sum = 0; 
    //iterate through each textboxes and add the values 
    $("input.add:checked, select .add:selected, input.add:not(:radio)").each(function() { 
     console.log(this); 
     //add only if the value is number 
     if(!isNaN(this.value) && this.value.length!=0) { 
      sum += parseInt(this.value); 
     } 
    }); 
    //.toFixed() method will roundoff the final sum to 2 decimal places 
    $("#sum").html(sum.toFixed(0)); 
}