我有一个代码集,可以在选择框中动态创建“选项”。但是,由于我们正在使用Knockout,当我转到SELECT新创建的选项并点击它时,它会被删除,例如消失了!噗!!!!
所以,这是创建脚本:
function createNewGroup()
{
var htmlSelect = document.getElementById('groups');
var optionValue = document.getElementById('newgroupname');
if (optionValue.value === '')
{
alert('Please enter group name.');
optionValue.focus();
return false;
}
if (isOptionAlreadyExist(htmlSelect, optionValue.value))
{
optionValue.value = "";
alert('Group name already exists.\n\nPlease try again.');
optionValue.focus();
return false;
}
var selectBoxOption = document.createElement("option");
selectBoxOption.value = optionValue.value;
selectBoxOption.text = optionValue.value;
htmlSelect.add(selectBoxOption, null);
optionValue.value = "";
alert("New group has been added successfully.");
optionValue.focus();
return true;
};
由于这是一个KNOCKOUT可观察的,当我选择它时如何将它保留在框中,而且,如何将该新值发送回JSON对象。这是一个例子:
{ “基团”:[
{
"groupname" : "Administrator",
"attr" : { "id" : "li.attr.node_1",
"href" : "#",
"data-bind" : "click: grpMgmt('Administrator');" }
},
{
"groupname" : "Guest",
"attr" : { "id" : "li.attr.node_2",
"href" : "#",
"data-bind" : "click: grpMgmt('Guest');" }
}
]
}
因此,管理员用户可以创建一个新用户,使其看起来像这样:
{ “基团”:[
{
"groupname" : "Administrator",
"attr" : { "id" : "li.attr.node_1",
"href" : "#",
"data-bind" : "click: grpMgmt('Administrator');" }
},
{
"groupname" : "Guest",
"attr" : { "id" : "li.attr.node_2",
"href" : "#",
"data-bind" : "click: grpMgmt('Guest');" }
}
],
“用户”:[
{
"groupname" : "Joes Users",
"attr" : { "id" : "li.attr.node_1",
"href" : "#",
"data-bind" : "click: grpMgmt('Joe');" }
}
]
}
好的,我现在就停止写作......谢谢......
答案 0 :(得分:0)
如果您正在使用knockout(我实际上无法看到),您需要做的就是将您的选择框绑定到一个可观察的数组,当您需要添加一个新项目时,只需将其推入数组并将其淘汰即可将它添加到列表中。
Knockout本质上应该用更少,更简单的代码替换你所包含的脚本。