【问题标题】:Dynamic updating price slider动态更新价格滑块
【发布时间】:2016-03-22 11:42:38
【问题描述】:

我目前正在比较我们的价格滑块 http://www.showstyle.lu/homme/http://theme-lookz-responsive.webshopapp.com/en/designer/ 上的价格滑块,如果您在我们的主页 (ShowStyle) 上拖动过滤器,您可以在过滤器下看到,最小值和最大值的数值不会动态更新,即您必须猜测在哪里放开滑块并希望它能够达到价格。

在示例网站上:如果您拖动价格过滤器,最小值和最大值会动态更新,从而更容易查看您的设置。

我尝试比较两个过滤器价格框的代码,并看到了他们实现的这个附加脚本,但无法弄清楚这是否是导致它的原因,我认为它是但知道如何在我的模板上重新制定它吗?两者都使用相同的 CMS,因此允许使用此代码,这只是一个舒适的更新。我设法调整了代码,但不明白是否应该用 price-filter-range 或 min/max 语法替换“ui”语法。

原文

<script type="text/javascript">
$(function(){
  $('#filter_form input, #filter_form select').change(function(){
    $(this).closest('form').submit();
  });

  $("#collection-filter-price").slider({
    range: true,
    min: 0,
    max: 20,
    values: [0, 20],
    step: 1,
    slide: function( event, ui){
      $('.sidebar-filter-range .min span').html(ui.values[0]);
      $('.sidebar-filter-range .max span').html(ui.values[1]);

      $('#filter_form_min').val(ui.values[0]);
      $('#filter_form_max').val(ui.values[1]);
    },
    stop: function(event, ui){
      $('#filter_form').submit();
    }
  });
});

0/20 值取决于您所在的页面,所以我想这也需要根据当前目录页面上的最高价格项目进行动态

非常感谢任何帮助,非常感谢!

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    试试这个:

    $("#collection-filter-price").slider({
      range: true,
      min: 0,
      max: 750,
      values: [$('#filter_form_min').val(), $('#filter_form_max').val()],
      step: 1,
      slide: function( event, ui){
        $('.price-filter-range .min span').text(ui.values[0]);
        $('.price-filter-range .max span').text(ui.values[1]);
      },
      stop: function(event, ui){
        $('#filter_form_min').val(ui.values[0]);
        $('#filter_form_max').val(ui.values[1]);
        $('#filter_form').submit();
      }
    });
    

    请注意,由于误解,此代码(在我的回答中)已从原始代码更新。我还对其进行了重新编辑,以修复因包含此代码而损坏的功能。

    编辑:我刚刚注意到您的网站已经包含 JS 代码

      $(function(){
        $('#filter_form input, #filter_form select').change(function(){
          $(this).closest('form').submit();
        });
    
        $("#collection-filter-price").slider({
          range: true,
          min: 0,
          max: 750,
          values: [0, 520],
          step: 1,
          slide: function( event, ui){
        $('.sidebar-filter-range .min span').html(ui.values[0]);
        $('.sidebar-filter-range .max span').html(ui.values[1]);
    
        $('#filter_form_min').val(ui.values[0]);
        $('#filter_form_max').val(ui.values[1]);
      },
        stop: function(event, ui){
        $('#filter_form').submit();
      }
        });
      });
    

    但是,此代码是由服务器动态生成的(请注意 520 是如何嵌入到脚本中的)...它不起作用的唯一原因是因为它期望类名是 sidebar-filter-range 而不是 price-filter-range。如果您可以进行正确的修改以使其指向正确的元素,那么它应该可以工作。

    【讨论】:

    • 目前看不到任何结果 - 由于该网站基于 SEOshop CMS,我是否应该在所有页面中存在的自定义“索引”上实现此功能(就像我的一般 js 的其余部分脚本)或直接在可以找到滑块的页面上。如果是后者,那么在 price-filter-div 之前或之后(一般问题) - 重要吗?
    • @Counterfire 这将直接进入您可以找到滑块的页面。它应该追随它正在影响的元素。为安全起见,请将其放在 &lt;/body&gt; 标记的末尾之前(在 &lt;script&gt;&lt;/script&gt; 内)。如果您想立即尝试,只需获取代码,复制它,打开网页,然后打开 JS 控制台(大多数 PC 浏览器上为CTRL+Shift+J)并粘贴它,然后按Enter。它应该运行脚本并且滑块应该可以工作。如果您想进行进一步的测试,则需要在页面刷新时重新输入代码。
    • 当我在 Chrome java 控制台中测试它时它可以工作,但是当你滑动 -> 页面重新加载并且代码不起作用时,我会尝试将代码放在核心文件中页脚附近的底部或滑块页面上的页面,看看它是否有效
    • 已将其添加到底部滑块的页面 - 它有效!太棒了,非常感谢,肯定拿起了一个新的sn-p :)
    • @Counterfire 很高兴知道,但请阅读我刚刚在回答中所做的编辑:)
    猜你喜欢
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多