我有一个GET表单来选择搜索过滤器。
<form action="" method="get">
<select name="filter">
<option value="">no filter</option>
<option value="1">filter1</option>
<option value="2">filter2</option>
</select>
<input type="submit" value="Search"/>
</form>
如果用户选择filter1
,则网址将为/search?filter=1
,但如果他选择no filter
,则网址将为/search?filter=
我希望它是/search
如何告诉表单只提交非默认值?
答案 0 :(得分:1)
您可以使用javascript或jquery来执行此操作。 设置id以选择列表并执行javascript onchange事件。如果用户不选择过滤器,那么将删除名称属性,因此过滤器类型将不是搜索的一部分,但如果用户将选择过滤器1或过滤器2,则选择列表的名称将被过滤,因此它将显示在搜索变量中。 / p>
<form action="" method="get">
<select id="filter" name="filter">
<option value="">no filter</option>
<option value="1">filter1</option>
<option value="2">filter2</option>
</select>
<input type="submit" value="Search"/>
</form>
<script>
$("#filter").change(function(){
if($(this).val()==''){
$(this).removeAttr("name"); // if no filter selected
}else{
$(this).attr("name","filter"); // if filter 1 or filter 2 selected
}
});
</script>
答案 1 :(得分:1)
我认为你可以写你的提交功能!所以你可以做如下代码: 1)将 submit 的输入类型更改为按钮,并添加onclick属性以指向您的提交功能; 2)在那里,检查选择项的值,如果未选中,则不发送任何默认值。 3)使用空表单并将其方法更改为POST。
按照示例代码:
<html>
<head>
<script type="text/javascript" >
function mySubmit() {
var url="/search";
if (document.myForm.filter.value>0) {
url=url+"?filter="+document.myForm.filter.value;
}
document.mySubmitForm.action=url;
document.mySubmitForm.submit();
}
</script>
</head>
<body>
<form name="mySubmitForm" action="" method="post"> </form>
<form name="myForm" >
<select name="filter">
<option value="">no filter</option>
<option value="1">filter1</option>
<option value="2">filter2</option>
</select>
<input type="button" value="Search" onclick="javascript:mySubmit();"/>
</form>
</body>
</html>
答案 2 :(得分:0)
试
<option value="0">no filter</option>
并对其进行验证
答案 3 :(得分:0)
我很确定你不能。您提交的数据并没有值仍然是值。
只需使用正确的验证来检查过滤器是否为空。