0

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

我通过 URL 获取一些参数,如 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 aka 的那个......因为在这种情况下我们有 NSW,NSW 应该更改为选中。如果传递的参数是 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

4 回答 4

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');

查看上面的示例,我分配了 vars['state'] 因为我们不能将 ny vars 放入 jsfiddle http://jsfiddle.net/SPn3W/1/中的 url

于 2013-09-20T06:17:06.247 回答
1

只是

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

应该管用。只需在 document.onready() 中包含这一行

于 2013-09-20T06:28:24.710 回答
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"));
}
于 2013-09-20T06:23:00.590 回答
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);
   }
});
于 2013-09-20T06:47:36.017 回答