无法从javascript设置下拉列表的上一个值

时间:2017-01-19 00:06:02

标签: javascript jquery asp.net

如果页面上有未保存的数据,我在页面上有多个下拉框,我想限制用户更改下拉值。

我知道当hfSaveFlaghfSaveFlag值为true时,页面上有未保存的数据。

我的下拉列表:

<asp:DropDownList ID="ddlRFP" Width="250" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlRFP_SelectedIndexChanged" />
<asp:DropDownList ID="ddlSession" Width="250" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlSession_SelectedIndexChanged" />
<asp:DropDownList ID="ddlSessionType" Width="250" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlSessionType_SelectedIndexChanged" />
<asp:DropDownList ID="ddlCategory" Width="250" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlCategory_SelectedIndexChanged" />

我隐藏的元素:

<asp:HiddenField ID="hfPrevValue" runat="server" Value="" ClientIDMode="Static" />
<asp:HiddenField ID="hfSaveFlag" runat="server" Value="false" ClientIDMode="Static" />

我使用

后面的代码设置了onchangeonfocus个事件
ddlRFP.Attributes.Add("onchange", "if(!verifyPendingSave(this)) return false;");
ddlSession.Attributes.Add("onchange", "if(!verifyPendingSave(this)) return false;");
ddlSessionType.Attributes.Add("onchange", "if(!verifyPendingSave(this)) return false;");
ddlCategory.Attributes.Add("onchange", "if(!verifyPendingSave(this)) return false;");

ddlRFP.Attributes.Add("onfocus", "setPreviousValue(this);");
ddlSession.Attributes.Add("onfocus", "setPreviousValue(this);");
ddlSessionType.Attributes.Add("onfocus", "setPreviousValue(this);");
ddlCategory.Attributes.Add("onfocus", "setPreviousValue(this);");

Javascript函数

function verifyPendingSave(ctrl) {
    if ($("#hfSaveFlag").val() == 'true') {
        alert('You have pending changes on the page.');
        //var control = document.getElementById(ctrl);
        alert($("#hfPrevValue").val());
        alert(ctrl.value);
        ctrl.value = $("#hfPrevValue").val();
        return false;
}
    else {
        return true;
    }
}

function setPreviousValue(ctrl) {
    $("#hfPrevValue").val(ctrl.value);
}

我尝试使用onfocus捕获以前的选择,并在change事件触发并且页面上有未保存的数据时使用它重新分配。

当我点击下拉列表时,它正在执行setPreviousValue并在hfPrevValue中存储正确的选定值。

现在,当我从下拉列表中选择不同的项目时,它似乎在更改事件之前再次执行onfocus,从而导致存储的先前值丢失。我无法重置当前选择之前选择的值。我不确定我在这里缺少什么。

0 个答案:

没有答案