javascript - 如何防止 url 中显示空的 "get"变量?

标签 javascript html

我目前正在开发一个具有许多字段搜索表单,并且我希望该表单生成的链接尽可能短。
因此,我需要防止 url 中出现空或 undefined variable 。

我将举一个简短的例子来说明我正在尝试做的事情:

<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拥有答案,但我目前不知道如何实现它。

最佳答案

您可以尝试使用jquery.serialize()方法,然后通过&检查不同参数是否有值并分割结果字符串插入另一个数组(如果有),最后使用 &join 结果字符串,并使用您的 url 更改 location.href 并连接结果字符串与你的参数(当然,而不是所有这些 splitjoin...你可以使用 string.replace 通过正则表达式来完成) :

    $( "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;
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form method="get">
        <input type="text" name="variable_one"/>
        <select name="variable_two">
            <option value="a">a</option>
            <option value=""></option>
        </select>
        <select name="variable_three">
            <option value=""></option>
            <option value="a">a</option>
        </select>
        <input type="submit" value="Submit form!"/>
    </form>

希望这有帮助,

关于javascript - 如何防止 url 中显示空的 "get"变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28182062/

相关文章:

javascript - 如何增加第三方小部件短代码按钮的大小。下面是代码

javascript - 将\n\r 转换为字符串在 jquery 中没有任何作用

jquery - 有没有插件可以生成航类座位图?

javascript - 使用 javascript 跳过空格

jquery - Angular Responsive Table 不适用于 Internet Explorer 9 (IE 9)。适用于 IE 10

javascript - Chrome 和 IE8 对比其他

javascript - 每次调用 subview 时都会实例化父 Controller

javascript - 负载均衡器后面的 VPC 中的 Web 套接字出现错误

javascript - Remove 实际上是在 Promise 解决后删除一个 div

html - 仅使用 CSS 创建下拉列表项菜单