0

所描述的问题仅出现在 FF 和 Chrome-Browser 中,其他浏览器如 IE 和 Safari 工作正常。Opera 过去也可以正常工作,但现在不行了,因为我在几分钟前对其进行了测试!

我正在使用带有一些模块的 shop-system xtcModified-Version 1.06,例如 tabbing-module 和 price-updater-module。

这是价格更新程序的代码,我认为问题出在:

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-fiddle中提供了我的问题......它“有效”并显示了我遇到的问题,但布局错误。但这并不会损害问题...

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

通常,不同的维度应排列在选项卡中,在此示例中,它们一个接一个地显示。

现在解决问题:

文章的基本价格为 2,80 欧元。

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

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

当我再次单击相同的选项时,价格正确显示为 72 欧元。

每当我单击另一个选项卡中的另一个价格时,都会发生同样的事情,这在我之前描述的这个示例中看不到)。

另一个例子:首先选择第一个选项(4.20 欧元),然后选择最后一个选项“118.9 x 84.1 厘米”,价格为 60.00 欧元。更新后的价格显示为 61,40 欧元,因此基本价格和第一个选择的选项之间的差异再次...

最奇怪的是这个问题只出现在 Firefox、Opera 和 Chrome-Browser 中!!!我在 IE 和 Safari 中测试了同一个站点和 js-fiddle,它工作正常!

我很感激这方面的任何帮助!提前谢谢!

4

1 回答 1

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));
});
于 2013-07-12T20:06:52.243 回答