我目前正在处理搜索表单 多个字段,我希望所述表单生成的链接尽可能短。
因此,我需要防止在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 可以解答,但我目前还不知道如何实现它。
答案 0 :(得分:1)
您可以尝试使用jquery.serialize()
方法,然后split
结果字符串&
检查differents参数是否有值,如果有,则插入另一个数组中,最后{{1} }结果字符串使用join
并使用您的网址更改&
并将结果字符串与您的参数连接起来(当然不是所有这些location.href
,split
...你可以用正则表达式使用join
)来完成这些事情:
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;
希望这有帮助,