2009-11-30 5 views
6

두 개의 텍스트 상자가 있습니다. tbxProdAc & txtbxHowMany. 하나의 텍스트를 입력 할 때 다른 텍스트가 삭제 될 수 있도록 코드 뒤에 약간의 코드를 작성하고 싶습니다.Attributes.Add Onclick 이벤트는 C# 코드 뒤에 있습니다.

어떻게하면이 목표를 달성하고 어떤 이벤트를 배치해야합니까?

내가 페이지로드 이벤트

txtbxHowMany.Attributes.Add("onclick", "document.getElementById('tbxProdAC').innerText='';");

를 사용하지만 성공을 twithout 위해 노력했다 ... 이것은 pre_init에 있어야?

당신이 말할 수있는대로 여기 직장에서 초보자를 완료하십시오.

답변

7

먼저, .Net 컨트롤 인 경우 ID가 여전히 "tbxProdAC"인 페이지가 생성되면 ID가 변경되었을 것입니다. 이 경우 클래스를 사용할 수 있습니다.

는 다음을 시도 -이 JQuery와 사용 - 당신은

txtbxHowMany.Attributes.Add("onclick", "$('#tbxProdAC').val('');"); 

이 페이지의 헤드 섹션에 다음을 추가하는 것이 포함해야합니다.

<script type="text/javascript" src="jquery.js"></script> 

그리고 당신은 JQuery.Js의 여기에서 파일을 가져올 수 있습니다 http://docs.jquery.com/Downloading_jQuery#Download_jQuery

그리고 왜 : https://stackoverflow.com/questions/308751/why-use-jquery

+0

피노 (Pino)에게 감사의 말을 전합니다. "당신은 그 코드를 포함시켜야합니다."jquery 라이브러리에 추가하는 것은 내 소스 코드 또는 실제로 코드를 참조하는 것을 의미합니까? (두꺼운 질문에 대한 사과) – MrDean

+1

나는 메인 포스트를 업데이트했고 묻는 것으로 "두꺼운"것은 아니다. 우리 모두는 질문을해야합니다! 무엇이 더 나은지 묻는다. – LiamB

+0

흠 ... 나는 틀린 무엇인가해야했다! 제공된 코드를 사용하여 잘로드 된 페이지를 tbxProdAC에 입력 한 다음 txtbxHowMany를 클릭했습니다. 이로 인해 "개체가이 속성 또는 메서드를 지원하지 않습니다."라는 오류가 발생했습니다. 어딘가에 잘못 갔음에 틀림 없습니다! 나는 '... attributes.add ..'을 페이지로드 이벤트의 뒤에있는 C# 코드에 넣었습니다 ... 그게 올바른지 또는 mymain 소스 코드에 포함시켜야합니까? 도움 주셔서 감사합니다. – MrDean

-1

당신이 디자인보기를 사용하는 경우, 당신은 당신의 텍스트 상자를 더블 클릭하고 당신을 위해 이러한 방법을 만들 것입니다 :

private void tbxProdAc_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void txtbxHowMany_TextChanged(object sender, EventArgs e) 
    { 

    } 

다음 당신은 그냥 같이 그들을 편집 할 수 있습니다

 private void tbxProdAc_TextChanged(object sender, EventArgs e) 
    { 
     txtbxHowMany.Clear(); 
    } 

    private void txtbxHowMany_TextChanged(object sender, EventArgs e) 
    { 
     tbxProdAc.Clear(); 
    } 
+0

TextBox TextChanged 이벤트 - 텍스트 상자의 내용이 서버에 게시간에 변경 될 때 발생합니다. – LiamB

1

ASP.NET이 생성 된 컨트롤의 ID의 변경을, 그래서 아마 당신의 tbxProdAc는있을 것이다 id가 다른 것으로 바뀌 었습니다. 당신은 당신의

txtbxHowMany.Attributes.Add("onclick", "document.getElementById('tbxProdAC').innerText='';"); 

에 새로운 ID로 "tbxProdAc을"한 번 소스보기를 응용 프로그램을 실행하고 컨트롤의 ID를 알고 후 교체해야하고 네, 그것은에 onLoad를 작동합니다.

1

여기에서 중요한 문제는 컨트롤이 다른 컨트롤 (예 : 눈금) 안에있을 때 asp.net이 컨트롤의 ID를 접두어로 사용하여 컨트롤의 ID를 고유하게 유지하는 것입니다. 예를 들어 ID는 txbProdAc가 아니지만 Gridview1_txbProdAc이거나 심지어 Panel1_Panel2_gridview1_txProdAc 일 것입니다.

id asp.net이 컨트롤을 '부여'하거나 '이름을 변경'하는 코드를 알고 싶다면 .ClientID 속성을 사용할 수 있습니다. txtProdAc.ClientID에서 사용해야하는 ID를 제공합니다. 자바 스크립트/jquery.

txbProdAc를 다른 컨트롤에 배치 한 경우 .ClientID 함수가 클라이언트 스크립트에서 컨트롤의 올바른 ID를 항상 제공하므로 여전히 작동합니다.

미셸

0

Michel's 답변을 확장하려면 추가 당신이있는 거 이벤트는 정확해야하지만 당신은 ASP.NET이 클라이언트로 전송됩니다 아이디 변경으로 다르게 ID 선택기를 설정해야합니다

txtbxHowMany.Attributes.Add("onclick", string.Format("document.getElementById('{0}').innerText='';", tbxProdAC.ClientID)); 
0

TheOne이 대답 한 것에 조금 더해 웹 페이지의 소스를 볼 때 렌더링 된 콘텐츠가 표시됩니다. 여기서 ID는 다를 것입니다. 이 같은.

txtbxHowMany.Attributes.Add("onclick", "document.getElementById('ctl00_ContentPlaceHolder1_tbxProdAC').innerText='';") 
관련 문제