2011-11-06 1 views
0

ASP 버튼과 2 개의 레이블이 있습니다.ASP.Net 동적 JavaScript를 실행하고 포스트 백을 방지하려면 어떻게해야합니까?

<asp:Button runat="server" ID="btnHide" /> 
<asp:Label runat="server" ID="lblName"></asp:Label> 
<asp:Label runat="server" ID="lblPosition"></asp:Label> 

나는 동적 JS 스크립트를 만들었습니다.

string jsbtnHide = @"document.getElementByID('" + lblName.ClientID + @"').value = ''; 
document.getElementByID('" + lblPosition.ClientID + @"').style.display = 'none';"; 

버튼에 스크립트를 지정합니다. "OnClick"과 "OnClientClick"을 모두 시도했습니다.

btnHide.Attributes.Add("OnClick", jsbtnHide); 

그러나 스크립트를 성공적으로 실행하고 포스트 백을 실행할 수 없습니다. OnClientClick = "return false;"를 추가하려고했습니다. 동적으로 그리고 ascx 파일에. FireBug에서 올바르게 표시되지만 동적으로 무시되는 것 같습니다. OnClick은 포스트 백을 방지하지 못하는 것 같습니다. 스크립트가 실행되면 lblName이 ''로 변경되지 않고 한 번 작동하지 않습니다.

내가 뭘 잘못하고 있니? 나는 일이에 있었어요 :(

+0

이 링크 http 살펴 게시 이벤트를 호출 방지 코드의 끝에 복귀를 추가하려면이

string jsbtnHide = @"document.getElementByID('" + lblName.ClientID + @"').value = ''; document.getElementByID('" + lblPosition.ClientID + @"').style.display = 'none';return;"; 

로 클릭 코드를 변경할 좋은 트릭 을 사용할 수 있습니다 : // bytes.com/topic/asp-net/insights/817824-how-use-javascript-asp-net –

답변

0

당신은 기능과 거짓 반환의 추가 진술과 JS 함수를 다음 와이어 업 버튼에서 실행하고자하는 JS 코드를 포장하십시오.

뭔가 같은 :.

public string DynamicJSCode; //Page level 

//Page_Load 

    DynamicJSCode = @"function doSomeWork(){document.getElementById('" + lblName.ClientID + @"').innerText= ''; 
    document.getElementById('" + lblPosition.ClientID + @"').style.display = 'none'; return false;}"; 

은 그런 특성 (또는 다른 수단)를 사용하여 페이지에 위

<script type='text/javascript' language='javascript'> 
<%= DynamicJSCode %> 
</script> 

을 JS를 포함 그리고 수 있습니다 다음 wireup 회로 차단기의 기능 n은 다음과 같습니다 :

btnHide.Attributes.Add("onclick", "return doSomeWork();"); 

는 (의심없이) return; 전화를 사용해야 할 것입니다 다시 게시하지 않는 버튼 컨트롤을 방지합니다.

이것은 약간 더 유지 보수가 가능할 것입니다. 그리고 나중에 코드에 추가 단추 이벤트 핸들러 첨부가 필요하지 않습니다. 마크 업 자체에서 JS 함수 호출을 OnClientClick 이벤트에 할당 할 수 있으며 실행되는 코드는 항상 동적으로 생성됩니다.

<asp:Button runat="server" ID="btnHide" OnClientClick='doSomeWork();return false;' /> 

기능의 크기 또는 중요성에 관계없이 유지 관리가 더 잘된 코드를 작성하는 것이 좋습니다.

희망이 있습니다.

+0

Vaibhav- 답장을 보내 주셔서 감사합니다. 포스트 백을 방지하고 여전히 JS를 실행하는 한, 메서드가 완벽하게 작동했습니다. 그러나 여전히 JS 줄 "document.getElementByID ('"+ lblName.ClientID + @ "') 문제가 있습니다. 값 = '';" 작동 안함. FireBug를 사용하면 라벨이 바뀌지 않지만 스크립트가 올바르게 생성 된 것을 볼 수 있습니다. 어떤 아이디어? – user1032037

+0

먼저 위의 코드를 업데이트하고 테스트를 마쳤으며 내 컴퓨터에서 작동합니다. 둘째, 두 가지 변경 사항이있었습니다. 1) getElementById 및 getElementByID 2) 또한 값을 설정하는 대신 innerText를 빈 문자열로 설정합니다. 필요한 사항은 OnClick은 서버 측 클릭을위한 것이고 onclick은 클라이언트 측 클릭을위한 것입니다. 희망이 도움이! – Vaibhav

1

당신은 단지

+0

DevX, 답장을 보내 주셔서 감사합니다. "return;" 및 "false를 반환합니다." 대본에 쓰고 둘 다 일하지 않았다. 내가 이해하는 바에 따르면 "반환"문은 포스트 백을 방지하기 위해 OnClientClick 이벤트에 추가되어야합니다. 테스트에서 이것은 또한 올바른 것 같습니다. 문제는이 작업을 수행하면 OnClick 이벤트가 발생하지 않으므로 JS가 실행되지 않는다는 것입니다. 동적으로 JS OnClientClick 이벤트에 추가 된 "반환"statment 포함하여 무시 될 것으로 보입니다. Vaibhav - 답장을 보내 주셔서 감사합니다. 나는 지금 노력하고있다. – user1032037

+0

Vaibhav - 답장을 보내 주셔서 감사합니다. 나는 지금 노력하고있다. – user1032037

관련 문제