Javascript Dropdownlist不显示以前的值

Javascript Dropdownlist不显示以前的值,javascript,asp.net,Javascript,Asp.net,我有一个asp.net dropdownlist控件,autopostback为false。 我已经编写了js代码来显示确认消息,同时下拉值也发生了变化 function ConfirmAbsent(ddlPresence) { if (ddlPresence != null) { var myValue = ddlPresence.options[ddlPresence.selectedIndex].text; var blnAb

我有一个asp.net dropdownlist控件,autopostback为false。 我已经编写了js代码来显示确认消息,同时下拉值也发生了变化

function ConfirmAbsent(ddlPresence) {
        if (ddlPresence != null) {
            var myValue = ddlPresence.options[ddlPresence.selectedIndex].text;
            var blnAbsent = confirm("This will mark as "+ myValue +". Please confirm clicking OK.");

            if (blnAbsent) {
                return true;
            }
            else {
                return false;
            }
        }
    }
并将此属性添加到dropdownlist,如下所示

ddlUserPresence.Attributes.Add("onchange", "if (!ConfirmAbsent(" + ddlUserPresence.ClientID
                    + ")) return; else __doPostBack('"
                    + ddlUserPresence.UniqueID + "', '');");
当我点击ok按钮时,它会回发页面正常工作,但当我点击cancel按钮时,它不会显示以前的值,而是显示当前值


因此,当我单击“取消”按钮时,它会显示上一个值。请帮助。

如果要防止事件发生,您应该
从事件处理程序返回false

ddlUserPresence.Attributes.Add("onchange", "return(ConfirmAbsent(" + ddlUserPresence.ClientID +"));"); 
您还传递了
DropDownList
的ClientID,但没有使用它来查找控件。因此,您应该使用
document.GetElementById

function ConfirmAbsent(ddlPresenceID) {
    var ddlPresence = document.GetElementById(ddlPresenceID);
    if (ddlPresence != null) {

请注意,您可以使用获取在服务器端为文本框设置的初始值。

@akeseth:
AutoPostback
不是事件。只有当客户端处理程序返回true时,下拉列表才会使用
AutoPostback=“true”
立即回发。因此,如果您从
onchange
返回
false
,下拉列表将不会回发。一旦onchange触发,就太晚了,无法阻止选择。您必须在onchange之前记住select并将其设置回原来的位置。如果您使用onclick或onfocus,您可以选择当前索引,这样当onchange触发时,您将拥有上一个选择。