我们正在尝试添加多个选择过滤器,以便在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
请帮我创建单个网址,使用过滤器参数加载产品
答案 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;
答案 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 = [“每小时”、“每日”、“每周”、“每月”、“每年”]