我不确定我的问题的标题是否足够有意义,所以这是我的问题:我有一个从服务器端动态生成的下拉列表,如下所示:
sb.append("<SELECT NAME='selectedQAStatuses' id='selectedReleaseQAStatuses' onchange='javascript:changeReleaseQAStatus(\""+releaseId+"\",\""+depEventSeq+"\",this);' >");
sb.append("<OPTION>Please select a QA status...</OPTION>");
for (String status : statusArray) {
if(status.equals(releaseStatus))
sb.append("<OPTION VALUE='"+status+"' selected>"+status+"</OPTION>");
else
sb.append("<OPTION VALUE='"+status+"'>"+status+"</OPTION>");
}
现在 javascript : changeReleaseQAStatus() 被调用。在这个 javascript 方法中,我调用了一个 confirm() 来查看用户是否确定。如果用户在确认弹出窗口中选择“确定”,则从“IF”块中我进行 Ajax 调用等,但如果用户在确认弹出窗口中选择“取消”,则从“ELSE”块中我从 JS 方法返回.
但是,在“取消”场景中,我看到尽管用户似乎已经“取消”了他的选择,但在浏览器屏幕上,下拉菜单似乎仍将新选项显示为“已选择”。因此,我认为,在 Javascript 的“ELSE”块中,我应该写一些内容来将选择恢复为原始选择。当页面在浏览器上呈现时,我应该如何“记住”下拉列表的原始值,以便我可以在“ELSE”块中使用这个初始值来恢复我的下拉列表。
我处理“OK”和“CANCEL”的Javascript:
function changeReleaseQAStatus(releaseSeq, depEventSeq, element1){
var selectedIndex = element1.selectedIndex;
var selectedStatus = element1.options[selectedIndex].value;
if (confirm("Do you want to change Release QA status to \"" + selectedStatus + "\" ?")){
url = contextPath + "/changeQAStatusOfRelease.action?selectedStatus="+selectedStatus+"&releaseSeq="+releaseSeq+"&depEventSeq="+depEventSeq;
ajaxUpdate({url:url,
elementId:'compReleasesDtlsDiv',
});
}else{
/// No Code needed to execute here...
}
}