作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 get 方法的表单,用于从数据库中搜索项目(车辆)。该表单有多个复选框集。类似用户可以通过从品牌复选框列表中选择多个品牌来过滤搜索结果。同样,用户还可以从车型选择框列表等中对车型应用过滤器。表单上大约有 10 个这样的过滤器。
这是我的表单的代码片段:
<form action='./search' method='get'>
<input type='checkbox' name='make[]' value='BMW'/>
<input type='checkbox' name='make[]' value='Mercedes'/>
<input type='checkbox' name='make[]' value='Honda'/>
<input type='checkbox' name='make[]' value='Toyota'/>
<input type='checkbox' name='make[]' value='Porsche'/>
......//Remaining Form
</form>
同样,对于汽车模型,我有类似的标记...有这样 10 个过滤器,全部使用复选框列表实现。
现在解决问题,当我提交表单时,我得到如下 URL:
http://localhost/auto/search?make=BMW&make=Mercedes&make=Honda
这正在形成一种我不喜欢的查询字符串,即它会为所有检查的值重复“make”属性,并且也会对其余 9 个过滤器重复使用“make”属性。这将导致 URL 看起来很长且难看。
我想要的是我的 URL 应如下所示:
http://localhost/auto/search?make=BMW,Mercedes,Honda
这好多了,但我不知道如何实现这一点。我尝试的是获取复选框的所有值,然后将它们写入隐藏字段值,以便我在查询字符串中获得所需的格式。并取消设置用户选择的所有复选框,并提交包含所有选择的隐藏字段的表单。但问题是,当提交表单时,我在 URL 中得到两个“make”字段,例如:
http://localhost/auto/search?make=&car_makes=BMW,Mercedes,Honda
其中 car_makes 是隐藏的输入字段,我在其中写入了 value 属性中的所有选择。
有什么解决办法吗?因此 make 属性不会被提交,但它会被提交,因为它是表单的一部分。
谢谢。
最佳答案
尝试这些:
<html>
<head>
<script type="text/javascript">
function buildup(){
var makes=document.getElementsByName('make[]');
var m=document.getElementById('make');
m.value='';
ms='';
for (var i = makes.length - 1; i >= 0; i--) {
if(i>0)ms=ms+',';
ms=ms+makes[i].value;
}
m.value=ms;
document.getElementById('form').submit();
}
</script>
</head>
<body>
<input type='checkbox' name='make[]' value='BMW'/>
<input type='checkbox' name='make[]' value='Mercedes'/>
<input type='checkbox' name='make[]' value='Honda'/>
<input type='checkbox' name='make[]' value='Toyota'/>
<input type='checkbox' name='make[]' value='Porsche'/>
<form action='./search' id='form' method='get'>
<input type='hidden' name='make' id='make'>
<input type='button' value='submit' onclick='buildup()'>
</form>
</body>
关于php - 如何使用同名的多个复选框自定义查询字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26656477/
我是一名优秀的程序员,十分优秀!