根据URL中传递的参数选择元素

时间:2013-09-20 06:13:32

标签: javascript jquery

请找到http://jsfiddle.net/SPn3W/

我在http://mywed.com?state=NSW

中通过网址获取了一些参数

我有一个表单,其中部分HTML代码是

<div class="form-group">
    <label class="col-lg-4 col-sm-4 control-label" for="state">State:*</label>
    <div class="col-lg-8 col-sm-8 stateDiv">
        <select class="form-control" id="state" name="state" mandatory="true">
            <option value="" selected="selected">-Please select-</option>
            <option value="ACT">ACT</option>
            <option value="NSW">NSW</option>
            <option value="TAS">TAS</option>
            <option value="QLD">QLD</option>
            <option value="VIC">VIC</option>
        </select>
    </div>
</div>

我需要选择即将来到URL的那个......因为在这种情况下我们有新南威尔士州,新南威尔士州应该更改为选中。如果传递的参数是ACT,则选择ACT。

我一直在尝试如下

var vars = [], hash;
    var q = document.URL.split('?')[1];
    if(q != undefined){
        q = q.split('&');
        for(var i = 0; i < q.length; i++){
            hash = q[i].split('=');
            vars.push(hash[1]);
            vars[hash[0]] = hash[1];
        }
}
if(vars['state'] != null){

}

如何根据参数来选择它?

4 个答案:

答案 0 :(得分:2)

要获得正确的状态值,您可以使用此功能:

 function GetURLParameter(sParam)
    {
        var sPageURL = window.location.search.substring(1);
        var sURLVariables = sPageURL.split('&');
        for (var i = 0; i < sURLVariables.length; i++)
        {
            var sParameterName = sURLVariables[i].split('=');
            if (sParameterName[0] == sParam)
            {
                return sParameterName[1];
            }
        }
    }​

var state = GetURLParameter('state');

如果您使用的是jQuery 1.6或更高版本,请尝试此操作:

$('#state option[value="'+ state +'"]').prop('selected', true);

对于低于1.6的jQuery,请使用:

$('#state option[value="'+ state +'"]').attr('selected', 'selected');

查看上面的示例,我指定了变量[&#39; state&#39;]因为我们无法将ny变量放入jsfiddle的url中 http://jsfiddle.net/SPn3W/1/

答案 1 :(得分:1)

       Try this  
        if(vars['state'] != null){
           $('#state').val(vars['state']);
        }


or you can change your code for getting query string

$.urlParam = function(name){
        var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
        if (!results)
        { 
            return 0; 
        }
        return results[1] || 0;
    }

if($.urlParam("state") != ''){
     $('#state').val($.urlParam("state"));
}

答案 2 :(得分:1)

$('#select').val(vars['state']);

应该有效。只需在document.onready()

中包含此行

答案 3 :(得分:0)

谢谢大家。你所有的答案都以某种方式帮助了我。这就是我最终使用

$( document ).ready(function() {
   var vars = [], hash;
    var q = document.URL.split('?')[1];
    if(q != undefined){
        q = q.split('&');
        for(var i = 0; i < q.length; i++){
            hash = q[i].split('=');
            vars.push(hash[1]);
            vars[hash[0]] = hash[1];
        }
}
    var urlState = vars['state'];
    if(urlState != null){
       $("#state").val(urlState);
   }
});