【问题标题】:JQuery If Statement: If Price = 0, Display MessageJQuery If 语句:如果价格 = 0,则显示消息
【发布时间】:2020-09-08 18:12:53
【问题描述】:

处理显示/覆盖 Magento 2.3.3 定价的文件,我有以下 JQuery 语句:

 if(price != 0){
  $('#product-price-'+product_id+' .price').html(price);      
  }

我想改变它,如果价格 = 0,它会显示一条消息,要求报价。我试过以下没有运气。它仍然显示所有 0 价格。

  if(price != 0){
   alert('Call For Quote');      
  }

这是完整的脚本:

<script type="text/javascript">
    require(["jquery","mage/loader"],function($) {
        $(document).ready(function() {

            var customurl = "<?php echo $this->getUrl() . 'customer/index/price'?>";
            var productId = "<?php echo $productId; ?>";
            var loaderImg = "<?= $block->getViewFileUrl('images/loader-1.gif') ?>";
            var loaderHtml = '<div id="price-panel-'+productId+'"  data-role="pannel" class="price-panel" style="position: absolute;"><div data-role="loader" class="loading-mask" style="position: relative;"><div class="loader"><img style="position: relative;" src="'+loaderImg+'" alt="loading" width="30px"></div></div>';

            $('[data-role=priceBox]').hide();
            $('#product-price-'+productId+' .price').hide();
            $('[data-product-id='+productId+']').before(loaderHtml);
            $("#price-panel-"+productId+ " .loader").show();

            $.ajax({
                url: customurl,
                type: 'POST',
                dataType: 'json',
                data: {
                    productId: productId,
                },
                complete: function(response) {


                    for (let [key, value] of Object.entries(response.responseJSON)) {

                        product_id = value.productId;
                        price = value.price;
                        qty = value.qty;                             
                       /* product_id = response.responseJSON.productId;
                        price = response.responseJSON.price;
                        qty = response.responseJSON.qty;*/

                        if(product_id){
                            $('[data-role=priceBox]').show(); 
                            loaderClass = "div.price-panel-"+product_id;
                            $("#price-panel-"+product_id).hide();   


                            $('#product-price-'+product_id+' .price').show();

                            if (price != 0) {
                                $('#product-price-' + product_id + ' .price').html(price);
                            } else {
                                alert("Call for quote");
                                }


                           /* if(qty != 0){
                                $('#product-available-qty-'+product_id).html('Available: '+qty); 
                            }*/
                            console.log(price);    
                        }
                    }                        

                },
                error: function (xhr, status, errorThrown) {
                    console.log('Error happens. Try again.');
                }
            });
        });
    });
</script>

【问题讨论】:

  • 如果我没看错,你可能只需要将price != 0 更改为price === 0..
  • 已更改。价格仍显示为 0 美元。
  • “$”是否包含在价格变量的值中?
  • 价格在前端显示为 0.00 美元。我在上面添加了完整的脚本。
  • console.log(typeof price) 显示什么?

标签: jquery magento2


【解决方案1】:

您是否尝试过使用!== 运算符?因为它比较值并检查类型。

例如price !== 0

【讨论】:

    【解决方案2】:

    将警报放在else 块中。

    if (price != 0) {
      $('#product-price-' + product_id + ' .price').html(price);
    } else {
      alert("Call for quote");
    }
    

    【讨论】:

    • 已添加,但仍然没有运气。我不能编辑正确的字符串来替换定价。
    • 对不起,我对 Magento 一无所知。
    猜你喜欢
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    相关资源
    最近更新 更多