如何在jquery中获取多个复选框值

时间:2018-02-27 06:54:34

标签: jquery

我们正在尝试添加多个选择过滤器,以便在Magento 2.1.0中使用Smile Elastic Suite为分层导航应用按钮。

我已经创建了一个jQuery脚本来获取所有多个选中的选项,并且只拆分数组中的params,如下所示。

  

first_filter_name = 325,first_filter_name = 326,first_filter_name = 327,second_filter_name = 225,second_filter_name = 228

那么现在如何转换这个数组并使用重复的参数制作单个网址? 预期网址为:http://localhost.com/page.html?first_filter_name[0]=72&first_filter_name[1]=83&first_filter_name[2]=84&second_filter_name[0]=brand1&second_filter_name[1]=brand2

我们的过滤器看起来像

我的脚本就像:

 $(".apply-filters").on("click",function(e){
         e.preventDefault();
            var val=[];
            var queryString= [];
            var hash;
            $("input[name='type']:checked").each(function() {                    
            val.push($(this).val().slice($(this).val().indexOf('?') + 1).split('&'));

            });
           alert(val);
        });

警报结果是:

  

isconsumablefor = 325,isconsumablefor = 326,isconsumablefor = 327,sets_pcs = 225,sets_pcs = 228

请帮我创建单个网址,使用过滤器参数加载产品

2 个答案:

答案 0 :(得分:0)

您可以使用reduce创建值数组,然后使用join连接成一个字符串:



(function() {          
  var url = $('input[type="checkbox"]') // get all checkboxes
               .filter(':checked')  // get only checked
               .toArray()  // convert jQuery collection to array
               .reduce(function(acc, val) {        
                  acc.push('input[' + val.id + ']=' + val.value);
                  return acc;
               }, [])
               .join('&'); // join to string
  console.log(url);
})();

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="0" type="checkbox" value="100" checked />
<input id="1" type="checkbox" value="200" />
<input id="2" type="checkbox" value="300" checked />
<input id="3" type="checkbox" value="400" checked />
<input id="4" type="checkbox" value="500" checked />
&#13;
&#13;
&#13;

答案 1 :(得分:0)

var values = 
$("input[name=cbxName]:checked")
.get()
.reduce(function(accumulator, currentValue){
     accumulator.push(currentValue.value);
     return accumulator;
},[]);

var values = 
$("input[name=cbxName]:checked")
.toArray()
.reduce(function(accumulator, currentValue){
     accumulator.push(currentValue.value);
     return accumulator;
},[]);

结果示例 => values = [“每小时”、“每日”、“每周”、“每月”、“每年”]