【问题标题】:Is it possible to filter for two input values using one checkbox?是否可以使用一个复选框过滤两个输入值?
【发布时间】:2019-05-06 06:24:54
【问题描述】:

我正在使用复选框来显示和过滤 json 数据点。像下面这样写的value 甚至可能吗?

示例复选框 html:

<input class="star" type="checkbox" value="4,4.5" id="s4" name="check" />

【问题讨论】:

标签: html checkbox input


【解决方案1】:

您可以使用带有隐藏输入的 jquery。

<script>
 $(document).on('change','#s4',function(){
  $(this).is(':checked'){
   $(this).next().val('4,4.5');
  }else{
   $(this).next().val('');
  }
 });
</script>
<input class="star" type="checkbox" id="s4"/>
<input type="hidden"name="check"/>

【讨论】:

    【解决方案2】:

    如果您用简单的英语描述您想要实现的目标,也许会有所帮助。

    查看复选框类型的输入: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox

    您可以指定 value="whatever",并且该值将在表单提交时传递(或可通过 javascript/jquery 访问)。

    听起来您正在尝试建立某种评分系统(我看到“星”和“4、4.5”)。您可以考虑使用另一个元素(span?)甚至一个列表(),为单个列表项设置样式,并使用 javascript 计算值。

    同样,如果您能阐明您想要达到的目标,这将有所帮助。

    编辑:再想一想,是的。您绝对可以在复选框值属性中存储像“4,4.5”这样的值。如果您想将“4”和“4.5”视为单独的值,我想您可以运行 .split(',') 来获取由逗号分隔的值数组。

    【讨论】:

    • 我正在使用 D3.js 和 Yelp json 数据集在 Leaflet 地图上绘制点。我的困境是我只能按整数过滤。但是,有时餐厅的评分为 3.5。我的值只能是 3 或 3.5 之一。我希望找到一种方法来组合结果,以便所有评分为 3 的餐厅也包括评分为 3.5 的餐厅。
    【解决方案3】:

    我找到了解决问题的方法。也许这个问题具有误导性,因为它只是一个更大项目的一小部分。

    但是,我找到了一个快速而肮脏的解决方案,它可能没有最好的语法。请发表评论,如果您认为我仍然可以将其清理干净,因为我仍在学习。

    HTML 示例:

    <div class="boxes">
      <input class="star" type="checkbox" value="4" id="s4" name="4.5" />
      <label for="s4"><img src="img/4star.png"></label>
    </div>
    <div class="boxes">
      <input class="star" type="checkbox" value="3" id="s3" name="3.5" />
      <label for="s3"><img src="img/3star.png"></label>
    </div>
    <div class="boxes">
      <input class="star" type="checkbox" value="2" id="s2" name="2.5" />
      <label for="s2"><img src="img/2star.png"></label>
    </div>
    

    我正在过滤 4-4.5 或 3-3.5 等的 json 数据。我使用输入 valuename 来提取两个实例。

    这是我使用的代码:

    $('#star-filter').delegate('input[type=checkbox]', 'change', function() {
      $('input.star').not(this).prop('checked', false);  
      var $list = $('.leaflet-zoom-animated > g > circle'),
      $checked = $('input:checked');    
      if ($checked.length) {                            
        var sel = '';
        var selector = '';
        $($checked).each(function(index, element){
          sel += "[data-staralt~='" + element.name + "']";  
          selector += "[data-star~='" + element.value + "']";   
        });                        
        $list.hide();
        $('.leaflet-zoom-animated > g > circle').filter(sel).show();
        $('.leaflet-zoom-animated > g > circle').filter(selector).show();
      }
      else {
        $list.show();
      }
    });
    

    【讨论】:

      猜你喜欢
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 2021-02-28
      • 1970-01-01
      • 1970-01-01
      • 2012-04-04
      • 1970-01-01
      • 2022-08-18
      相关资源
      最近更新 更多