javascript - 如何在 Spring Boot、JavaScript、Ajax 和 MySql 中为电子商务实现多个产品过滤器?
问题描述
我正在使用 Spring Boot 开发电子商务 Web 应用程序。所以我有添加或应用多个产品过滤器的功能。所以有多个复选框,用户可以通过这些复选框根据他/她的愿望从商店中过滤或搜索产品来选中或选择复选框。所以,我卡住了应该如何从前端完成。所以过滤器选项是(类别、标签、子类别、最低和最高价格、折扣和流行度)。假设用户检查了类别,则 div 内的产品应仅根据所选类别显示,如果用户已检查类别以及价格范围。例如,类别 -> 蛋糕和最低价格 -> 300 卢比和最高价格 -> 1000 卢比。所以产品应该按照这个来展示(蛋糕只在300卢比到1000卢比的价格范围内)。
下面是我的 JavaScript 函数,它包含所有复选框和输入值:
function updatelisting(){
var min = document.getElementById("minprice").value;
var max = document.getElementById("maxprice").value;
var c = new Array();
var t = new Array();
var s = new Array();
var sp = new Array();
var d = new Array();
$('[id="checkbox1"]').each(function(i,e){
if($(e).is(':checked')){
c.push(e.value);
}
})
var category = c.toString();
$('[id="checkbox2"]').each(function(i,e){
if($(e).is(':checked')){
t.push(e.value);
}
})
var tag = t.toString();
$('[id="checkbox3"]').each(function(i,e){
if($(e).is(':checked')){
s.push(e.value);
}
})
var subcategory = s.toString();
$('[id="checkbox5"]').each(function(i,e){
if($(e).is(':checked')){
sp.push(e.value);
}
})
var specialtag = sp.toString();
$('[id="checkbox6"]').each(function(i,e){
if($(e).is(':checked')){
d.push(e.value);
}
})
var discount = d.toString();
var url = "api/searchbyfilter";
$.post(url,{
category : category,
tag : tag,
subcategory : subcategory,
specialtag : specialtag,
discount : discount,
min : min,
max : max,
}, function(data, status) {
if (data.status == "OK") {
if (data.statusCode == 1) {
console.log(data.response);
var list = data.response;
if(list.length == 0 || list.length == null){
alert("No product found");
}else{
$("#shop-1").html(selecttab(<%=pagelength%>));
}
} else {
var error = data.responseMessage;
swal(error, "", "error");
}
} else {
var error = data.responseMessage;
swal(error, "", "error");
}
});
}
如果有人有建议或解决方案,将对我有所帮助。你可以问我任何疑问。
解决方案
当您想触发您定义的某些代码时,您可以使用事件侦听器。
例如,当您想在单击按钮时打印“Hello World”时,您可以在按钮上添加单击事件侦听器
const button = $('#button');
button.on('click', function() {
console.log('Hello World!');
});
上面的代码将打印“Hello World!” 每当您单击按钮时。因此,以相同的方法,您可以在过滤器上添加更改事件,即复选框
const checkbox = $('#checkbox');
checkbox.on('change', function() {
// The function you defined
updatelisting();
});
推荐阅读
- reactjs - 如何强制更新 React.memo 子组件?
- typescript - 保护类型中的参数为“:any”
- javascript - 无法在我的页面上处理 ajax 调用,因为 Django request.is_ajax 在页面初始加载时返回 True
- kotlin - 在匿名 lambda 中返回 false
- r - 使用数字数据和字符创建数组
- microsoft-teams - 如何使用 Graph API 向 MS Team 的频道发送消息
- asp.net-core - 如何设置 WASM IdentityServer 与用户/通过身份验证和设备身份验证与来自控制台应用程序的客户端/秘密
- version - 在 NuxtJS 应用程序上显示 package.json 版本
- java - java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/NashornScriptEngineFactory
- r - 带有年份的条形图滑块