2013-07-12 41 views
0

上述问题仅出现在FF和Chrome浏览器中,其他浏览器(如IE和Safari)正常工作。 Opera也曾经工作得很好,但它现在不再适用了,正如我几分钟前测试过的那样!FF,Opera和Chrome中的价格更新程序无法正常工作

我正在使用商店系统xtcModified-Version 1.06以及一些模块,如标签模块和价格更新模块。

下面是对价格更新,在这里我想这个问题是在代码:

var attributePriceUpdater; 
(function ($) { 
    // BEGIN: attributePriceUpdater 
    attributePriceUpdater = { 
     // BEGIN: calculate 
     calculate: function (This) { 
      var newPrice = 0; 
      var summe = 0; 
      var symbolLeft = ''; 
      var symbolRight = ''; 
      var data = This.data('attrdata'); 

      if ($('#optionen' + data.pid + ' select').length) { 
       var el = ' option:selected'; //wenn selectfeld 
      } else { 
       var el = ' input:checked'; //wenn checkbox oder radio 
      } 

      $.each($('#optionen' + data.pid + el), function (index, item) { 
       if (!$(this).parents('#optionen' + data.pid + ' [id^="pmatrix_v"]').attr('style')) { 
        data = $(this).data('attrdata'); 
        if (data.aprice != 0) { 
         if (data.prefix == '-') { 
          summe -= data.aprice; 
         } else if (data.prefix == '+') { 
          summe += data.aprice; 
         } else if (data.prefix == '=') { 
          summe += data.aprice - data.gprice; 
         } 
        } 
       } 
      }); 

      newPrice = (summe + data.gprice).toFixed(2).toString().replace(/[.]/, ','); 
      if (data.cleft) { 
       symbolLeft = data.cleft + ' '; 
      } 
      if (data.cright) { 
       symbolRight = ' ' + data.cright; 
      } 

      // html schreiben 
      $('#optionen' + data.pid + ' .calculatePrice span.cuPrice').html(data.vpe + ' ' + symbolLeft + newPrice + symbolRight); 
      $('div.product_price').html(symbolLeft + newPrice + symbolRight); 
      // html schreiben 
     }, 
     // END: calculate 

     // BEGIN: calculateAll 
     calculateAll: function() { 
      $.each($('div[id^="optionen"] input[type=radio]:checked, div[id^="optionen"] input[type=checkbox], div[id^="optionen"] option'), function (index, item) { 
       attributePriceUpdater.calculate($(this)); 
      }); 
     } 
     // END: calculateAll 
    }; 
    // END: attributePriceUpdater 

    // BEGIN: $(document).ready 
    $(document).ready(function() { 
     attributePriceUpdater.calculateAll(); 
     $(".javascriptOff").css({ 
      display: "block" 
     }); 

     $('#tabbed_product_info2 a[href]').on("click", function() { 
      $('.cuPrice').css('background', 'red'); 
     }); 

     $('div[id^="optionen"] select').click(function() { 
      attributePriceUpdater.calculate($('option', this)); 
     }); 

     $('div[id^="optionen"] input').click(function() { 
      attributePriceUpdater.calculate($(this)); 
     }); 
    }); 
    // END: $(document).ready 
})(jQuery); 

我已提供我的问题在JS-拨弄 ...它“作品”,并显示我得到的问题,但布局是错误的。但是,这并不损害问题...

http://jsfiddle.net/t2UW5/1/

一般情况下,不同的尺寸应安排在标签,在这个例子中,他们将显示一个后对方。

现在的问题:

该文章的基价是2,80欧元。

我选择例如第一个选项,价格为4,20欧元。现在我滚动到最后,并显示正确的价格。现在我选择最后一个选项“160 x 90厘米”,并且价格得到更新。但不是72,00欧元的正确价格,它显示73,40欧元。

首先我选择了价格4,20欧元的选项。这减去2,80欧元的底价等于1,40欧元。这是价格显示的价格,包括新价格(72,00欧元+ 1,40欧元= 73,40欧元)。

当我第二次点击相同的选项时,价格正确显示在72 EUR。

每当我点击另一个选项卡中的另一个价格时,就会发生同样的事情,这在以前描述的示例中无法看到)。

另一个例子:首先选择第一个选项(4,20欧元),然后是第四个最后选项“118.9 x 84.1厘米”,价格为60,00欧元。更新的价格与61,40欧元一起显示,所以再次选择基准价格和第一个选项...

绝对奇怪的是,这个问题只发生在Firefox,Opera和Chrome-浏览器!我在IE和Safari上测试了同一个站点和js-fiddle,它工作的很好!

我很欣赏这方面的任何帮助! Thx提前!

+0

我只是想你的jsfiddle在Chrome V28在Windows 7上,并显示每一次正确的价格。 – RobH

+0

Hi RobH! Thx看这个......对不起,我想我换了Opera和Chrome ......所以它在FF和Opera中不起作用,但是它在IE7,Safari和Chrome上运行在Win7上!对不起! –

+0

我在.each()中添加了一个'console.log()'语句,它计算summe并发现输出错误时,.each()处理了两个值为2,8的元素。我还注意到,某些单选按钮具有不同的名称=属性,这允许选择多个单选按钮。希望这可以帮助您追踪问题的根源并找到解决方案。 – dsh

回答

1

试试这个JS FIDDLE。基本上,在点击事件单选按钮全部取消选择,然后单击被选中。

http://jsfiddle.net/t2UW5/4/

$('div[id^="optionen"] input').on("click", function() { 
    $(':radio').prop('checked', false); 
    $(this).prop('checked', true); 
    console.log('clicked an input'); 
    attributePriceUpdater.calculate($(this)); 
}); 
+0

嗨djrconcepts! 非常感谢您对此的帮助!这似乎奏效,但它导致了我以前没有想到/认识到的其他一些问题......但是您的解决方案似乎让我朝着正确的方向发展!我会继续尝试根据你的代码! Thx再次! –

相关问题