获取当前URL的正则表达式模式

时间:2012-02-25 20:02:29

标签: javascript jquery regex checkbox

我有这样的网址: http://mysite.aspx/results.aspx?s=bcs_locations&k=“医院”或“办公室”或...... k =之后的术语来自复选框,当选中时,复选框值正在传递。现在我需要获取当前的URL并获取k之后的所有值,所以如果有两个'Hospital'和Office然后获取这些值并选中这些值的复选框。努力坚持刷新已选中的复选框,所有选中的复选框都松散了状态..

Hospitals<input name="LocType" type="checkbox" value="Hospital"/> &#160; 
Offices<input name="LocType" type="checkbox"  value="Office"/> &#160; 
Emergency Centers<input name="LocType" type="checkbox"  value="Emergency"/>

到目前为止我所拥有的是: 我想要这样的URl模式的正则表达式。有人帮忙吗?

 var value = window.location.href.match(/[?&]k=([^&#]+)/) || [];
    if (value.length == 2) {
        $('input[name="LocType"][value="' + value[1] + '"]').prop("checked", true);
     }  

3 个答案:

答案 0 :(得分:0)

这是我们用来从查询字符串中获取信息的方法。它来自另一个S.O.回答我找不到。但是这将为您提供一个表示查询字符串中所有选项的对象。

var qs = function(){
    var query_string = {};
    if(window.location.search){
        (function () {
            var e,
                a = /\+/g,  // Regex for replacing addition symbol with a space
                r = /([^&=]+)=?([^&]*)/g,
                d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
                q = window.location.search.substring(1);

            while (e = r.exec(q)){
               query_string[d(e[1])] = d(e[2]);
            }
        }());
    }
    return query_string;
};

答案 1 :(得分:0)

你可以这样做:

var MyApp = {
    urlArgs:{}
};

MyApp.processUrlArgs = function() {
    this.urlArgs = {};
    var str = window.location.search ? window.location.search.substring(1) : false;
    if( ! str ) return;
    var sp = str.split(/&+/);
    var rx = /^([^=]+)(=(.+))?/;
    var k, v, i, m;
    for( i in sp ) {
        m = rx.exec( sp[i] );
    if( ! m ) continue;
    this.urlArgs[decodeURIComponent(m[1])] = decodeURIComponent(m[3]);
    }
};

但我不明白为什么会这样呢?如果你在asp工作,为什么不使用HttpUtility.ParseQueryString

答案 2 :(得分:0)

试试这个

function getParamsFromUrl(url){
    var paramsStr = url.split('?')[1],
        params = paramsStr.split('&'),
        paramsObj = {};

    for(var i=0;i < params.length; i++){
        var param= params[i].split('='),
            name = param[0],
            value = param[1];
        paramsObj[name] = value;
    }
    return paramsObj;
}

var testUrl = 'http://mysite.aspx/results.aspx?s=bcs_locations&k=Hospital';
getParamsFromUrl(testUrl);//return: Object { s="bcs_locations", k="Hospital"}