不以GET形式提交默认值

时间:2017-03-07 13:22:00

标签: html forms get

我有一个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

如何告诉表单只提交非默认值?

4 个答案:

答案 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)

我很确定你不能。您提交的数据并没有值仍然是值。

只需使用正确的验证来检查过滤器是否为空。