【发布时间】:2015-07-03 09:51:26
【问题描述】:
我在一个带有一长串元素的 jsp 页面上有很多选择下拉菜单。所有这些下拉列表都具有相同的元素列表。假设我必须按照用户的偏好降序获得选择。我通过以下方式进行了(许多)选择:
<select id="sel1" class="myClass">
<script>
populate(document.getElementById('sel1'));
</script>
</select>
...
<script>
function populate(op1)
{
var myArray = ["Chinese", "Italian", "Indian", ...//a long list of elements
var sel = op1;
for(var i = 0; i < myArray.length; i++) {
var opt = document.createElement('option');
opt.innerHTML = myArray[i];
opt.value = myArray[i];
sel.appendChild(opt);
}
}
</script>
我必须以这样一种方式创建 javascript/JQuery 代码:如果用户在第一次选择时选择了一个选项,则该选项在其他选项中会被禁用/删除,为以后的更改留出空间。比如说,用户的偏好顺序是:中文、印度、意大利......然后在第一个下拉菜单中选择中文时,它会从其他下拉菜单中被禁用/删除。然后,在从第二个中选择 Indian 时,它会从所有其他(包括前一个)中禁用/删除。 现在,如果用户决定他的偏好顺序实际上是中文、意大利文、印度文……他应该能够以这样的方式更改他的选择,这样代码不会被破坏。比如说,我们可以有一个重置按钮,它通过调用这个函数来重置所有的选择:
function resetFunc()
{
var options = document.getElementsByClassName("myClass");
for (var i = 0, l = options.length; i < l; i++)
{
options[i].selectedIndex = "0";
}
}
知道如何做到这一点吗?我需要代码独立于浏览器(在谷歌搜索时,我在某处读到 IE 不支持从下拉列表中删除元素)。
编辑:这就是我想要的:
但是,这里有一个问题。如果用户不断改变他的选择,这件事就会崩溃。我可以选择多个选项。
【问题讨论】:
-
请创建 plunker 或 fiddle
-
@mplungjan:不,实际上我没有。但它确实给了我一个 jsfiddle 示例,在我的情况下也不起作用。
-
因此:
$(this).find("option").prop("disabled",false);- 它也必须是有条件的 -
@mplungjan 抱歉,我没听明白。这个问题意味着运行额外的代码来检查任何选择是否相同。可以删除选择吗?因此,如果用户方面有更正,总会有重置。
标签: javascript jquery html