2014-12-01 57 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)); 
}