无法使用easyDropDown.js设置所选值

时间:2014-03-27 15:43:50

标签: javascript jquery html css

我正在尝试使用easyDropDown.js添加来设置我的投递箱的样式,但我遇到了一个问题。我的下拉框不是静态创建的。加载网页时,使用数组附加下拉列表。这个下拉框出现在我网站的多个页面上,我正在尝试进行设置,以便当用户在一个页面上进行选择时,该选择会进入每个页面。

以下是对代码正在执行的操作的逐步演绎:

当页面启动时,它会附加easyDropDown列表,以便所有值都存在。

$('#homeSelectSite').empty();

s = "";
s = "<option value='site'>Site</option>";
for (var i = 0; i < Sites.length; i++) {
     s = s + "<option value='" + Sites[i].SiteID + "'>" + Sites[i].SiteID + " " + Sites[i].SiteName + "</option>";
}
$('#homeSelectSite').append(s);

注意:站点是我用来填充下拉框的数组。

现在,一旦创建了下拉框列表,我需要设置选择的值。如果用户在另一页上进行了选择,则在sessionStorrage中设置此值。

$('#homeSelectSite').easyDropDown();
var selectedSite = sessionStorage.getItem("CurrentSiteID");
if (selectedSite != undefined && selectedSite != null) {
    $('#homeSelectSite').val(selectedSite);
}

所以代码正在做的是:清空当前的drop box,用新值附加它,用easyDropDown设置样式,最后设置所选的值。出于某种原因,这不起作用。追加和样式工作正常,但它不允许我设置选定的值。我也试过用这个:

$('#homeSelectSite').easyDropDown('select', selectedSite);

我有无法设置所选值的原因吗?如果我删除与easyDropDown相关的所有内容,这一切都有效。

2 个答案:

答案 0 :(得分:2)

今天我遇到了类似的问题,因为我试图使用easyDropDown设置下拉列表的选定值。

我所做的是找出待选选项的索引,而不是按值选择。

在你的情况下,它会是这样的:

var index = 0;
$('#homeSelectSite option').each(function(i, item) {
   if ($(this).val() === selectedSite) {
     index = i;
   }
});
$('#homeSelectSite').easyDropDown('select', index);

希望它有所帮助。

答案 1 :(得分:0)

看起来easyDropDown 2.1.4中存在一个错误

第326行应改为:

index = self.$select.find('option[value='+index+']').index() - 1;

为:

index = self.$select.find('option[value='+index+']').index();

这只能解决easyDropDown选择上一个项而不是你想要的项的事实,但我不确定这会解决你的问题。是的,你必须使用插件中的'select'方法而不是'val'。