자바 스크립트를 실행한 후 제어의 선택한 값이 설정되었습니다.

StackOverflow https://stackoverflow.com/questions/9341

  •  08-06-2019
  •  | 
  •  

문제

단 ASP.NET 응용 프로그램.

나는 두 개의 드롭다운 컨트롤이 있습니다.에 첫 번째 드롭다운 나 자바 스크립트 onChange 이벤트입니다.JavaScript 할 수 있는 두 번째 드롭다운고 제거하는 값은 그것에서(가치에서 선택된 첫 번째 드롭다운).는 경우 그들은 공백을 클릭의 첫 번째 값을 드롭다운,그 두 번째 드롭다운 비활성화됩니다(그리고 옵션을 리셋).

나는 또한 코드 OnPreRender 는 방법을 활성화 또는 비활성화 번째 드롭다운 값을 기반으로의 첫 번째 드롭다운.이렇게 하는 가치의 첫 번째 드롭다운 메뉴에서 선택할 수 있습니다 코드(적재 사용자 설정).

내 문제입니다:

  1. 사용자가 선택한 무언가 첫 번째에서 드롭다운.두 번째 드롭다운 될 것이 활성화를 통해 자바 스크립트.
  2. 그들은 그 변경에 세 번째 드롭다운 시작하는 게시다.후에 다시 게시 드롭다운에 있는 정확한 상태로(첫 번째 값을 선택한 두 번째,드롭다운 사용)입니다.
  3. 면 그들은 다음 단추를 클릭하십시오,두 번째 드롭다운 것입니다 더 이상 사용할 수 있지만 그것이 있어야이 있기 때문에 뭔가 선택한 첫 번째에서 드롭다운.

나도 추가 시작 시 스크립트(설정하는 올바른 국가의 두 번째 드롭다운)에 ClientScript.RegisterStartupScript, 그러나 이라는 첫 번째 드롭다운가 selectedIndex0, 지 않는,실제로 그것이 무엇입니다.나의 추측되는 가치의 선택을 얻을 설정한 후에 스크립트(하지만 여전히지 않는 전화 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>

편집:대체 코드입니다.이 작업에도 귀하의 사용자가 제어할 수 있습니다.내가 믿는 등록합니다.ClientScriptBlock 작동하지 않기 때문에 작성하는 코드에서는 차단 실행 창입니다.onload 라고 합니다.과정(나는 확실하지 않의 이점)는 DOM 개체 없는 그들의 값을 설정 하는 시간입니다.고,이런 이유로 당신이 지 selectedIndex 으로 항상 0.

다른 팁

두 번째 경우 드롭다운 것은 처음에 사용을 통해 자바 스크립트(이 기간 동안 자바 스크립트 onchange 때문에,당신이 지정하지 않),클릭한 후 back 버튼을 다시 이전 다시 게시지 않을 것입 활성화합니다.

혼합 ASP.NET 클래식 javascript 수 있습 hairy.할 수 있습을 봐야 ASP.NET's Ajax 구현(또는 타사 AjaxPanel 제어 당신을 사용하도록 강요 이전 ASP.NET 버전)입니다.사람들은 당신에게 행동할을 통해 순수한 C#지 않고,당신을 강제로는 리조트 javascript 해커-pokery.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top