我有一组设置URL字符串的搜索过滤器(用于进一步处理)。当页面重新加载以显示结果时,用户选择的选项将丢失。我想知道是否可以使用jquery从url中捕获参数并“记住”选择了哪些选项?
例如,如果我的网址包含 www.something.com/index.html?&colour=red&circle=1&star=0,我的表单会加载以下内容:
<h3>Colour</h3>
<p>Blue: <input name="colour" type="radio" value="blue" /></p>
<p>Red: <input name="colour" type="radio" value="red" /></p> [selected]
<p>Green: <input name="colour" type="radio" value="green" /></p>
<h3>Shape</h3>
<p>Circle: <input name="circle" type="checkbox" value="1" /></p> [selected]
<p>Square: <input name="square" type="checkbox" value="1" /></p>
<p>Star: <input name="star" type="checkbox" value="1" /></p>
感谢您的光临。
答案 0 :(得分:1)
您可以使用以下JS对象
location.search
这将为您提供地址栏的查询字符串参数
答案 1 :(得分:0)
此信息保存在您必须提取参数的位置对象Location in javascript上。
答案 2 :(得分:0)
你可以使用这个函数获取url参数(看这里Append urlVariable to next page's link):
function getParameterByName( name )
{
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return decodeURIComponent(results[1].replace(/\+/g, " "));
}
var colour= getParameterByName('colour');
var circle= getParameterByName('circle');
var star= getParameterByName('star');
如果你有参数,那么很容易选择它们:
$('input[name=colour][value='+colour+']').attr('checked', 'checked');
答案 3 :(得分:0)
<script type="text/javascript">
function getQueryStr(name) {
hu = window.location.search.substring(1);
gy = hu.split("&");
for (i=0;i<gy.length;i++) {
ft = gy[i].split("=");
if (ft[0] == ji) {
return ft[1];
}}}
$(document).ready(function() {
$('input[name=color]').val(getQueryStr("colour"));
$('input[name=circle]').prop("checked", (getQueryStr("circle")=="1"));
$('input[name=square]').prop("checked", (getQueryStr("square")=="1"));
$('input[name=star]').prop("checked", (getQueryStr("star")=="1"));
});
</script>
答案 4 :(得分:0)
除非有特殊原因,否则您需要在客户端执行此操作:
这通常在服务器端上完成。您可以检查服务器端的参数(您可能仍在执行此操作),并将带有预先选中的复选框的HTML标记发送回客户端。
从好的方面来说,这也适用于禁用javascript的浏览器以及搜索引擎。