如何清空"得到"变量被阻止显示在URL中?

时间:2015-01-27 23:37:27

标签: javascript html

我目前正在处理搜索表单 多个字段,我希望所述表单生成的链接尽可能短。
因此,我需要防止在url中出现空或未定义的变量。

我将简要介绍一下我正在尝试做的事情:

<form method="get">
    <input type="text" name="variable_one"/>
    <select name="variable_two">
        <!--options-->
    </select>
    <select name="variable_three">
        <!--options-->
    </select>
    <input type="submit" value="Submit form!"/>
</form>

在这个例子中,默认情况下,如果我用字符串“foo”填充第一个字段,然后提交表单,网址将如下所示:

example.com/search?variable_one=foo&variable_two=&variable_three=

我需要删除空变量,如下所示:

example.com/search?variable_one=foo

在这个实例中,空的url变量没有用,它们的删除会使链接更容易使用,或者至少更短。

我认为 javascript 可以解答,但我目前还不知道如何实现它。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用jquery.serialize()方法,然后split结果字符串&检查differents参数是否有值,如果有,则插入另一个数组中,最后{{1} }结果字符串使用join并使用您的网址更改&并将结果字符串与您的参数连接起来(当然不是所有这些location.hrefsplit ...你可以用正则表达式使用join)来完成这些事情:

&#13;
&#13;
string.replace
&#13;
    $( "form" ).on( "submit", function( event ) {
      event.preventDefault();
      var url = $( this ).serialize();
      var array = url.split('&');
      var resultArray = [];
      for(i in array){
        console.log(array[i].split('='));
        if(array[i].split('=')[1]){
           resultArray.push(array[i]);
        }
      }
      var url_params = resultArray.join('&');
      var yourURL = "http://your_url" + "?" + url_params;
      // do your get...
      alert("location.href to " + yourURL);
      location.href = yourURL;
    });
&#13;
&#13;
&#13;

希望这有帮助,