2010-01-19 3 views
3

asp.net 유효성 검사 컨트롤을 사용하여 asp.net 페이지를 만들고 있습니다. 유효성 검사가 실패하면 div (클라이언트에서)를 표시하려고합니다. 내가 어디에서해야하니? 클라이언트에서 OnValidate 이벤트에 액세스하는 방법을 찾을 수 없습니다. 서버에서이 작업을 수행 할 수 있지만 클라이언트에서 수행하는 것이 좋습니다.클라이언트 측 유효성 검증에 실패한 div를 숨기려면 어떻게합니까?

답변

0

당신은

String scriptString = "<script type='text/javascript'>MakeDivVisible();</script>"; 
this.RegisterClientScriptBlock("clientScript", scriptString); 

다음 자바 스크립트 함수에서 변경할 수있는 DIV의 디스플레이처럼 Page.RegisterClientScriptBlock 방법을 사용하여 서버 측 코드에서 자바 스크립트 함수] 1

를 호출 할 수 있습니다

document.getElementById("divId").style.display = 'block'; 

또는 div 속성 runat = "server"를 부여한 경우 s에서 div에 액세스 할 수 있습니다. 오류 코드를 수정하고 표시를 블록으로 변경하십시오.

divId.Style["display"] = "block"; 
+0

유효성 검사가 실패한 경우에만 수행하고 싶습니다. 제출시에만. 그리고 고객에게. – cerhart

+0

그러면 submit 함수 내에서 클라이언트 자체에 자바 스크립트 코드를 작성하고 마지막 단계로 false를 반환 할 수 있습니다. – rahul

+0

문제는 제출 기능이 없다는 것입니다. asp.net 유효성 검사 컨트롤을 사용하고 있습니다. – cerhart

0

클라이언트에서 JavaScript가 켜져 있음을 보장 할 수 없으므로 클라이언트와 서버에서 유효성 검사를 수행해야합니다. 다음은 클라이언트 측에서이를 수행하는 단계입니다. 이는 서버 측에서이를 구현하는 것이 간단해야하기 때문입니다. 에서 (새로운 showErrors 함수를 호출

<script language="javascript" type="text/javascript"> 
    function showErrors() { 
     if (!Page_IsValid) { 
      document.getElementById('divErrors').style.display = 'block'; 
     } else { 
      document.getElementById('divErrors').style.display = 'none'; 
     } 
    } 
</script> 
마지막으로

하는 제출을 등록 스크립트를

<div id="divErrors" runat="server" style="display: none;"> 
    This should only appear when validation fails. 
</div> 

는 페이지에 다음과 같은 자바 스크립트를 추가

는 다음을 같이 간단한 DIV를 감안할 때 Page_Load 이벤트) :

If Not Page.IsPostBack() Then 
    Dim scriptName As String = "OnSubmitScript" 
    Dim scriptType As Type = Me.GetType() 
    Dim script As ClientScriptManager = Page.ClientScript 
    If Not script.IsOnSubmitStatementRegistered(scriptType, scriptName) Then 
     script.RegisterOnSubmitStatement(scriptType, _ 
         scriptName, "showErrors();") 
    End If 
End If 
관련 문제