2013-03-07 3 views
4

ascx 컨트롤을로드하는 asp.net 기본 페이지가 있습니다. 렌더링되는 ascx 사용자 컨트롤에있는 Textarea, jQuery로 ite 값 받기

<asp:TextBox ID="description" runat="server" Rows="8" Columns="35" TextMode="MultiLine" class="smth" title="A Title"></asp:TextBox> 

으로 I는

<textarea id="descriptionMap" rows="5" cols="25" class="smth" title="A Title"></textarea> 

과 유사한 텍스트 박스를 선언 한 ASCX 컨트롤

<textarea name="description" rows="8" cols="35" id="description" class="smth" title="A Title"></textarea> 

같이 메인 페이지

I는 텍스트 영역 요소 선언 같은 것을 렌더링합니다. 내가 처음 텍스트 상자의 내용을 액세스 할 수있는 기본 페이지에서

$('#' + <%=description.ClientID %>).val() 

로 (메인 페이지에 포함 된)하지만

$('#descriptionMap').val() 
으로 ASCX 컨트롤에 포함 된 텍스트 상자의 내용을 액세스 할 수 없습니다입니다 내가

<textarea id="descriptionMap">some static content</textbox> 

으로 ASCX 파일에서 텍스트 상자를 선언하는 경우

그러나, 나는 액세스 할 수 있습니다 이,하지만 텍스트를 직접 쓰는 경우에는 아무 일도 일어나지 않습니다. 이것은 나를 미치게합니다. 어떤 제안? IE 8을 사용하고 있는데 문제가 될 수 있습니까?

편집. 단순화 된 예. 다음은 ascx 컨트롤의 렌더링 방법입니다.

<textarea id="descriptionMap" rows="5" cols="25" class="smth" title="A Title"></textarea> 
<input type="submit" id="sendMap" value="Send" onclick="sendTest();" /> 
<script type="text/javascript"> 
function sendTest() { 
    alert(document.getElementById('descriptionMap').value); 
}</script> 

경고 대화 상자가 비어 있습니다. 문제는 ascx 컨트롤을 어떻게 든 사용하는 것과 관련이 있어야합니다.

+0

textarea id가 "descriptionMap"으로 렌더링되고 있습니까? –

+0

예. 그것은 문제가 아닙니다. – blomm444

답변

0

사용

$('#' + '<%= description.ClientID %>').val() 

또는

$('#<%= description.ClientID %>').val() 
1

당신은 서버 컨트롤 <asp:TextBox runat="server"...을 사용하거나 직접 ASCX 페이지 내 HTML 요소 <textarea id="descriptionMap"...를 작성하는 경우는 조금 불분명하다.

첫 번째 옵션 (ascx 내에서 서버 측 컨트롤 만들기)을 사용하는 경우 요소의 최종 ID는 사용자 정의 컨트롤 자체의 ID를 기반으로합니다. 당신이

<uc:MyTag runat="server" Id="MyControl01" /> 

으로 메인 페이지에 사용자 정의 컨트롤을 추가 한 경우

예를 들어, 다음 사용자 정의 컨트롤 내부의 텍스트 영역의 마지막 ID는 MyControl01_descriptionMap 것 당신은 사용하여 액세스해야합니다 $('#MyControl01_descriptionMap') (.NET Framework 4 이상에서 기본 ClientIDMode를 사용하는 경우).

ascx 파일 내에 html 요소를 직접 생성하는 경우 id가 unquie인지 확인하고 동일한 ID를 사용하여 컨트롤에 액세스 할 수 있어야합니다.

+0

html 요소를 직접 생성합니다. 그리고 이드는 유일하다고 확신합니다. 원래 게시물에 명시된 바와 같이, ascx 파일의 텍스트 영역에 정적 컨텐츠를 직접 작성하는 경우 문제가 발생하지 않습니다. 하지만 사용자가 입력 한 내용에는 적용되지 않습니다. 사용자 컨트롤을 <% @ Reference Control = "~/MapPopUp.ascx"%>'로 등록한 다음 과 같이 코드 숨김으로로드합니다. Dim MapPopUp As Control = LoadControl ("~/MapPopUp.ascx") PlaceHolder1.Controls.Add (mapPopUp)'. 이것은 사용자 정의 컨트롤을로드하는 올바른 방법입니까? – blomm444

+0

물론이 방법을 사용하는 한 가지 방법입니다. http://msdn.microsoft.com/en-us/library/sbz9etab(v=vs.100).aspx의 예와 같이이를 수행하는 또 다른 직접적인 방법이 있습니다. ? cs-save-lang = 1 & cs-lang = vb # code-snippet-1 – Saranya

+0

브라우저로 들어오는 최종 소스를 붙여 넣고 질문을 업데이트 할 수 있습니까? thanks – Saranya

관련 문제