使用 jQuery 将选项值移动到下拉列表顶部
Moving option value on top of dropdown list using 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>
所以,逻辑是:
- 如果作为查询字符串的 'Referral' 获得通过,那么我将检查 select 选项中的值并将其移至顶部并禁用下拉列表。 不工作!见下图。
- 如果下拉列表没有查询字符串值,则禁用下拉列表并将其存储在隐藏字段中。 (工作中!)
我在这里缺少什么?
如果我通过了 ?Referral=Albert,那么它应该会在顶部显示 'Al'。如果我传递 ?Referral=Steve,则在顶部显示 'Steve' 并禁用下拉菜单。
如果您可以指望引荐是有效值,您可以试试这个(未经测试):
$('#refDropDown').val(queryStringName).prop('disabled', true);
否则首先检查该值是否存在,方法如下:
if($('#refDropDown option[value="' + queryStringName + '"]').length != 0){
//code above here
}
然后去掉选项上的那个循环,以及将 select 框设置为禁用的 if
。
另请注意,禁用的 select 框不会在您提交表单时提交值,因此您需要使用推荐参数或隐藏字段。
您可以使用 jQuery 的 val() 函数来 select 选项:
$("#refDropDown").val(queryStringName);
我有这个代码:
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>
所以,逻辑是:
- 如果作为查询字符串的 'Referral' 获得通过,那么我将检查 select 选项中的值并将其移至顶部并禁用下拉列表。 不工作!见下图。
- 如果下拉列表没有查询字符串值,则禁用下拉列表并将其存储在隐藏字段中。 (工作中!)
我在这里缺少什么?
如果我通过了 ?Referral=Albert,那么它应该会在顶部显示 'Al'。如果我传递 ?Referral=Steve,则在顶部显示 'Steve' 并禁用下拉菜单。
如果您可以指望引荐是有效值,您可以试试这个(未经测试):
$('#refDropDown').val(queryStringName).prop('disabled', true);
否则首先检查该值是否存在,方法如下:
if($('#refDropDown option[value="' + queryStringName + '"]').length != 0){
//code above here
}
然后去掉选项上的那个循环,以及将 select 框设置为禁用的 if
。
另请注意,禁用的 select 框不会在您提交表单时提交值,因此您需要使用推荐参数或隐藏字段。
您可以使用 jQuery 的 val() 函数来 select 选项:
$("#refDropDown").val(queryStringName);