我有两个带有Java脚本的选择框。当我使用filter1时,我的网址更改为www.url.com/&filter[]=6827,这非常有效,所选选项也可以正常工作。但我想要一个新的选择框,如filter2与多个过滤器。当我像下面这样使用它时,网址如下所示:www.url.com/&filter []%3D = 6727%26filter []%3D6728
有人能解决这个问题吗?我认为它在jquery ...不确定。
<div class="filter1">
<div class="title">Filter1</div>
<form action="filter1" method="get" id="input-custom-filter1">
<select name="filter[]=" onchange="$('#formFilters').submit();">
<option value="6725">Option1</option>
<option value="6726">Option2</option>
<option value="6727">Option3</option>
<option value="6728">Option4</option>
</select>
</div>
<div class="filter2">
<div class="title">Filter1</div>
<form action="filter2" method="get" id="input-custom-filter2">
<select name="filter[]=" onchange="$('#formFilters').submit();">
<option value="6725&filter[]=6726">Option1 & Option2</option>
<option value="6727&filter[]=6728">Option3 & Option4</option>
</select>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('#formFilters').submit() {
}
});
});
</script>
答案 0 :(得分:0)
代码无法理解您传递的所有符号。 我不确定你要在这里实现什么,但它显然不是你的JavaScript中的错误,而不是你的HTML。 虽然使用6727&amp; filter [] = 6728作为值是一个不好的想法。
我希望错误是您获取提交信息的地方。你可能有错误定义和重定向到网址。
答案 1 :(得分:0)
上面的HTML代码片段中存在一些问题。
请从=
删除<select name="filter[]="
,name属性用于表示表单字段的名称,如果设置 method =“get”,浏览器将自动添加 = 以构建网址。
<option value="6725&filter[]=6726">
无法满足您的要求。 value属性中的所有内容都将被视为某个表单字段的值,在您的情况下为 filter [] ,因此会被编码。这就是您看到%3D
不用于传递表单字段的多个值。 Naturaly复选框是此案例的选项。
因此,在第二种形式中,您可以使用复选框
传递多个值<input type="checkbox" name="filter[]" value="6725"/>
<input type="checkbox" name="filter[]" value="6726"/>
同样,请从任何表单字段元素中的名称属性中删除 = 。
答案 2 :(得分:0)
<option value="6725&filter[]=6726">Option1 & Option2</option>
<option value="6727&filter[]=6728">Option3 & Option4</option>
您的选项值存在问题,请尝试更改它。
答案 3 :(得分:0)
@gijsnl URL编码是默认的浏览器行为(因为您使用的是表单 get 方法),我认为破解它并不是一个好主意。在您的情况下,您可以使用多选来实现目标。 StackOverflow中已有帖子,
<强> How to post the selections of an HTML List Box with multiple selected values 强>
我的建议如下, 1.从select元素的 name * 属性中删除等号; 2.不要在一个选项元素中添加多个值 3.使用表单发布而不是获取,除非您有充分的理由这样做。