0

使用 javascript 和 asp.net。AutoPostBack 看起来正在清除我通过下拉列表中的 javascript 声明的变量“callBackReason”。不幸的是,我需要变量在 Javascript 中。有没有办法在 AutoPostBack 之后保持声明?

非常感谢。

<asp:DropDownList AutoPostBack="true" OnSelectedIndexChanged="dropVehicleRequest_Changed" runat="server" ID="dropVehicleRequest"></asp:DropDownList>

<asp:DropDownList runat="server" ID="dropCallbackReason" SelectedIndexChanged="riskSeverityDropDown_SelectedIndexChanged" onChange="javascript:updateCallBackReason()" ClientIDMode="Static" >
     <asp:ListItem Text="-- Select Reason --" Value="1"></asp:ListItem>
     <asp:ListItem Text="Booking" Value="2"></asp:ListItem>
     <asp:ListItem Text="Discussing" Value="3"></asp:ListItem>
     <asp:ListItem Text="Contact" Value="4"></asp:ListItem>
</asp:DropDownList>

<script type="text/javascript">
    function updateCallBackReason() {
    callBackReason = document.getElementById('<%=dropCallbackReason.ClientID%>').options[document.getElementById('<%=dropCallbackReason.ClientID%>').selectedIndex].text;
    return callBackReason;
        }
</script>
4

2 回答 2

0

将 HiddenField 添加到您的页面。然后在 updateCallBackReason() 函数调用 update document.getElementById('<%=dropCallbackReason.ClientID%>').selectedIndex 到隐藏字段。在表单加载时,您可以从隐藏字段设置 dropCallbackReason 选定索引。

否则,您可以使用 updatepanel 来实现此逻辑。也可以使用 updatepanel、hiddenfield、javascript __DoPostBack() 调用。在谷歌上进行详细搜索。然后在更新面板上将触发器设置为第一个下拉菜单。

于 2013-06-07T11:10:33.513 回答
0

JavaScript 是一种客户端语言,因此如果您执行 PostBack,您将转到服务器端。如果您希望下拉值是“默认”,您需要在服务器端(onLoad)定义它。

于 2013-06-07T10:47:53.967 回答