加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 在设置了控件的选定值后运行Javascript

发布时间:2020-12-16 04:26:45 所属栏目:asp.Net 来源:网络整理
导读:简单的ASP.NET应用程序 我有两个下拉控件.在第一次下拉时,我有一个JavaScript onChange事件. JavaScript启用第二个下拉列表并从中删除一个值(在第一个下拉列表中选择的值).如果他们单击下拉列表的空白第一个值,则将禁用第二个下拉列表(并重置选项). 我还在On
简单的ASP.NET应用程序

我有两个下拉控件.在第一次下拉时,我有一个JavaScript onChange事件. JavaScript启用第二个下拉列表并从中删除一个值(在第一个下拉列表中选择的值).如果他们单击下拉列表的空白第一个值,则将禁用第二个下拉列表(并重置选项).

我还在OnPreRender方法中有代码,它将根据第一个下拉列表的值启用或禁用第二个下拉列表.这样可以在代码中选择第一个下拉列表的值(加载用户设置).

我的问题是:

>用户在第一个下拉列表中选择一些内容.第二个下拉列表将通过JavaScript启用.
>然后他们改变第三个下拉菜单,开始回复.在回发后,下拉列表处于正确状态(选择第一个值,启用第二个下拉列表).
>如果他们然后单击后退按钮,第二个下拉菜单将不再启用,但应该是因为在第一个下拉列表中选择了某些内容.

我尝试通过ClientScript.RegisterStartupScript添加启动脚本(将设置第二个下拉列表的正确状态),但是当调用它时,第一个下拉列表的selectedIndex为0,而不是它实际上是什么.我的猜测是选择的值在我的启动脚本之后设置(但仍然没有调用onChange脚本).

关于尝试什么的任何想法?

解决方法

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    protected void indexChanged(object sender,EventArgs e)
    {
        Label1.Text = " I did something! ";
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Test Page</title>
</head>
<body>
    <script type="text/javascript">
        function firstChanged() {
            if(document.getElementById("firstSelect").selectedIndex != 0)
                document.getElementById("secondSelect").disabled = false;
            else
                document.getElementById("secondSelect").disabled = true;
        }
    </script>
    <form id="form1" runat="server">
    <div>
        <select id="firstSelect" onchange="firstChanged()">
            <option value="0"></option>
            <option value="1">One</option>
            <option value="2">Two</option>
            <option value="3">Three</option>
        </select>
        <select id="secondSelect" disabled="disabled">
            <option value="1">One</option>
            <option value="2">Two</option>
            <option value="3">Three</option>
        </select>
        <asp:DropDownList ID="DropDownList1" AutoPostBack="true" OnSelectedIndexChanged="indexChanged" runat="server">
            <asp:ListItem Text="One" Value="1"></asp:ListItem>
            <asp:ListItem Text="Two" Value="2"></asp:ListItem>    
        </asp:DropDownList>
        <asp:Label ID="Label1" runat="server"></asp:Label>
    </div>
    </form>
    <script type="text/javascript">
        window.onload = function() {firstChanged();}
    </script>
</body>
</html>

编辑:替换整个代码.这甚至可以在您的用户控件中工作.我相信Register.ClientScriptBlock不起作用,因为您在该块中编写的代码是在调用window.onload之前执行的.并且,我假设(我不确定这一点)DOM对象当时没有设置它们的值.而且,这就是为什么你总是将selectedIndex作为0.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读