자바 스크립트를 실행한 후 제어의 선택한 값이 설정되었습니다.
-
08-06-2019 - |
문제
단 ASP.NET 응용 프로그램.
나는 두 개의 드롭다운 컨트롤이 있습니다.에 첫 번째 드롭다운 나 자바 스크립트 onChange
이벤트입니다.JavaScript 할 수 있는 두 번째 드롭다운고 제거하는 값은 그것에서(가치에서 선택된 첫 번째 드롭다운).는 경우 그들은 공백을 클릭의 첫 번째 값을 드롭다운,그 두 번째 드롭다운 비활성화됩니다(그리고 옵션을 리셋).
나는 또한 코드 OnPreRender
는 방법을 활성화 또는 비활성화 번째 드롭다운 값을 기반으로의 첫 번째 드롭다운.이렇게 하는 가치의 첫 번째 드롭다운 메뉴에서 선택할 수 있습니다 코드(적재 사용자 설정).
내 문제입니다:
- 사용자가 선택한 무언가 첫 번째에서 드롭다운.두 번째 드롭다운 될 것이 활성화를 통해 자바 스크립트.
- 그들은 그 변경에 세 번째 드롭다운 시작하는 게시다.후에 다시 게시 드롭다운에 있는 정확한 상태로(첫 번째 값을 선택한 두 번째,드롭다운 사용)입니다.
- 면 그들은 다음 단추를 클릭하십시오,두 번째 드롭다운 것입니다 더 이상 사용할 수 있지만 그것이 있어야이 있기 때문에 뭔가 선택한 첫 번째에서 드롭다운.
나도 추가 시작 시 스크립트(설정하는 올바른 국가의 두 번째 드롭다운)에 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>
편집:대체 코드입니다.이 작업에도 귀하의 사용자가 제어할 수 있습니다.내가 믿는 등록합니다.ClientScriptBlock 작동하지 않기 때문에 작성하는 코드에서는 차단 실행 기 창입니다.onload 라고 합니다.과정(나는 확실하지 않의 이점)는 DOM 개체 없는 그들의 값을 설정 하는 시간입니다.고,이런 이유로 당신이 지 selectedIndex 으로 항상 0.
다른 팁
두 번째 경우 드롭다운 것은 처음에 사용을 통해 자바 스크립트(이 기간 동안 자바 스크립트 onchange 때문에,당신이 지정하지 않),클릭한 후 back 버튼을 다시 이전 다시 게시지 않을 것입 활성화합니다.
혼합 ASP.NET 클래식 javascript 수 있습 hairy.할 수 있습을 봐야 ASP.NET's Ajax 구현(또는 타사 AjaxPanel 제어 당신을 사용하도록 강요 이전 ASP.NET 버전)입니다.사람들은 당신에게 행동할을 통해 순수한 C#지 않고,당신을 강제로는 리조트 javascript 해커-pokery.