在选中和取消选中复选框时,从下拉列表中添加和删除项目
我目前在页面上有8个复选框; 每个代表一个环境名称。 我将环境名称传递给代码,然后查找服务器列表并将其填充到带有使用optgroup标题的下拉列表中。
用户可以选中一个框,并在下拉列表中添加一组服务器名称。 但是,如果他们取消选中相同的框,则会将所有服务器再次添加到下拉列表中。 我想要做的是,如果用户取消选中他们错误检查的复选框,我希望从下拉列表中删除关联的服务器和optgroup标题。
代码到目前为止:
serverList["BERT"] = ["server22", "server1", "server2", "server3"]; serverList["BOB"] = ["server10", "server55", "server99"]; function createServerList(env) { if (env != "") { if (! serverList[env]) { fadeInfoText("ERROR! No Lookup for " + env); return; } $("#ss1").append(""); for (var j = 0; j < serverList[env].length; j ++) { serveritem = serverList[env][j] $("#ss1").find("optgroup").append("" + serveritem + ""); } $("#ss1").multiselect('refresh'); } }
任何帮助将非常感激。
您处于正确的轨道和您拥有的代码,可以很好地将选项添加到选择。
但是,您可以使其更简单,并将id
添加到要添加的optgroup
中。 这样可以在取消选中复选框时轻松删除选项。 您需要做的就是根据id
删除相应的optgroup
。
此代码段将帮助您了解:
var serverList = {}; serverList["BERT"] = ["server22", "server1", "server2", "server3"]; serverList["BOB"] = ["server10", "server55", "server99"]; $("input[type=checkbox]").on("change", function() { refreshList(this.checked, this.value); // bind change event and call your routine }); function refreshList(add, env) { if (! add) { // if checkbox is not checked...remove the optgroup.. $("#ss1").find("optgroup#" + env).remove(); // ..based on id as the checkbox value return; // we don't need to continue } // if checkbox is checked.. var $optgrp = $("