2011-05-17 39 views
5

我有一个搜索功能,并希望在搜索输入中显示搜索词。从URL中提取词

我的网址是:search-1.html?keyword=XXXXXX

我如何获得这一点,并在输入显示呢?

预先感谢您。

回答

2

如果它仅仅是一个key=value url中你可以这样使用简单的正则表达式:

var theValueYouWant = window.location.href.match(/keyword=(.+)/)[1] 

然后设置这样的输入的值

$('input').val(theValueYouWant) 

如果你想更彻底解析GET字符串,这个功能应该做...

gets = {}; 
$.each(location.search.replace(/^\?/,'').split('&'),function(k,v){ 
    bits = v.split('='); 
    gets[bits[0]] = bits[1]; 
}); 
3

使用此: http://ajaxcssblog.com/jquery/url-read-get-variables/

走好运!

哦,那么你可以使用下面的输入字段中显示它的值:

$("#inputId").val($.url.param("keyword")); 
+0

漂亮和微小的插件+1 – Pinkie 2011-05-17 21:49:01

+0

是的,我喜欢它。我把它加载到我的大部分网站当中是一种习惯,因为它已经(快速,简单地)访问JS中的GET变量是多么有用。 – Todd 2011-05-17 21:55:53

0

的jQuery少的解决方案:

<script type="text/javascript"> 
var $_GET=[],pairs=location.href.toString().substring(location.href.toString().indexOf("?")+1).split("&");for(key in pairs){pos=pairs[key].indexOf("=");$_GET[pairs[key].substring(0,pos)]=decodeURIComponent(pairs[key].substring(pos+1).replace(/\+/g," "))}; 

// Now just access with $_GET 
// example... 
keyword = $_GET["keyword"]; 
</script> 
1

正则表达式的解决方案:

var S = window.location.search; // "?keyword=..." etc. 
var T = S.match(/^\?(?:[^\b]*&+)?keyword=([^&]*)/); 
if (T) 
    T = T[1] 
else 
    T = "no keywords found" 

如果多个值均为“关键字“(前?keyword=XXX&keyword=YYY),正则表达式只会找到这些值中的第一个(e.x. XXX)。即使查询字符串中有其他变量,该正则表达式也可以工作。

+0

你确定这个工作。尝试http://jsfiddle.net/pLHGh?hi=1&hi2=2 – Pinkie 2011-05-17 21:47:04

+0

@pinkie,这是因为jsfiddle中的脚本在'iframe'中运行。如果你使用http://fiddle.jshell.net/pLHGh/show/light/?hi=1&hi2=2的'iframe' url,它可以工作。 – 2011-05-17 21:57:57

+0

@gaby是的你是对的。好的解决方案 – Pinkie 2011-05-17 22:00:12