使用jQuery在下拉列表顶部移动选项值

时间:2015-01-06 22:03:26

标签: javascript jquery

我有这段代码:

  function SelectReferralFromQueryString() {
    var queryStringName = GetParameterValues('Referral');

    if (queryStringName != undefined || queryStringName != null) {
         queryStringName = decodeURIComponent(queryStringName);

       var exists = false;
       $('#refDropDown option').each(function () {
           if (this.value == queryStringName) {
               exists = true;
               var option = $(this);
               $(this).remove();
               $('#refDropDown option').prepend(option);
               return false;
           }
       });

       if (exists == true){
           DropDownReferral.value = queryStringName;
           $("#refDropDown").prop("disabled", true);
        }
    }

}

function GetParameterValues(param) {
    var url = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for (var i = 0; i < url.length; i++) {
        var urlparam = url[i].split('=');
        if (urlparam[0] == param) {
            return urlparam[1];
        }
        else
            return false;
    }
}

这个HTML:

<select name="refDropDown" id="refDropDown" class="items" data-hidden-field="DropDownReferral">
     <option value="">Please Select</option>
     <option value="Albert">Al</option>
     <option value="Steve T">Steve</option>
</select>

所以,逻辑是:

  1. 如果&#39;推介&#39;这是一个查询字符串,传递,然后我检查我的选择选项中的值并将其移到顶部并禁用下拉列表。 不工作!请参见下图。
  2. enter image description here

    1. 如果下拉列表中没有查询字符串值,则禁用下拉列表并将其存储在隐藏字段中。的(WORKING!)
    2. 我在这里缺少什么?

      如果我要通过?推荐=艾伯特,那么它应该告诉我&#39; Al&#39;在上面。如果我过世了?推荐=史蒂夫,然后就是表演史蒂夫&#39;在顶部并禁用下拉列表。

2 个答案:

答案 0 :(得分:0)

如果你可以指望推荐是一个有效的值,你可以尝试这个(未经测试):

$('#refDropDown').val(queryStringName).prop('disabled', true);

否则,通过执行以下操作来检查值是否存在:

if($('#refDropDown option[value="' + queryStringName + '"]').length != 0){ 
     //code above here 
}

然后摆脱选项上的那个循环以及将选择框设置为禁用的if

另外,作为附注,禁用的选择框在您提交表单时不会提交值,因此您需要使用引荐参数或隐藏字段。

答案 1 :(得分:0)

您可以使用jQuery的val()函数来选择选项:

$("#refDropDown").val(queryStringName);