2010-01-06 6 views
3

사용자가 버튼을 클릭하기 전에 필드 밖으로 나가면 표시하려는 내 레이블입니다. 버튼을 클릭해도 아무 일도 일어나지 않기 때문에 내가 뭘 잘못하고있는거야.Javascript에서 ASP 라벨을 볼 수있게 하시겠습니까?

<asp:Label ID="lblError" runat="server" 
Text="* Please complete all mandatory fields" style="display: none;" > 
</asp:Label> 

이것은 내가 버튼을 클릭했을 때 호출 기능 :

function valSubmit(){ 
    varName = document.form1.txtName.value; 
    varSurname = document.form1.txtSurname.value; 

    if (varName == "" || varSurname == "") 
    { 
    document.getElementById('lblError').style.display = 'inherit'; 

    } 
    else 
    { 

    .................other code go here........................... 
    return true; 
    } 

}

답변

5

왜 유효성 검사 컨트롤을 사용하지? 다음은 상자 밖으로 클라이언트와 서버 측 유효성 검사를 줄 것이다 - 나는 게으른 또는 아무것도 아니에요 것을 ... 코멘트 ;-)

편집 :

의 RequiredFieldValidator는 하나의 빨간색을 표시하도록 설정할 수 있습니다

각 컨트롤 옆에 별표가 표시되며 유효성 검사 요약 컨트롤을 사용할 수 있지만 공간을 차지합니다.

그래서, 그것은 ASP.Net이 컨트롤의 이름을 바꾸는 것이 가능하므로 JS 읽어야합니다

document.getElementById('<%= lblError.ClientID %>').style.display = 'inherit'; 

가가는 것을주고 ... 개인적으로

, 나는 여전히 검사기를 사용하십시오 컨트롤 ;-)

+0

공간 내 양식에 문제가 작동이

function Validate() { var objLbl = $get('<%=lblError.ClientID%>'); if (validations fails) { objLbl.style.display = ""; //displays label return false; } else { objLbl.style.display="none" //hides label return true; } } <asp:button id="btnValidate" runat="server" onclientclick="return validate();"/> 

희망 같은 방법 뭔가를 사용하여 볼 수 있도록, 그것은 매우 작은 팝업 형태이다. – Etienne

+0

덧붙여서, 공간이 프리미엄 인 경우 사용자 정의 검사기를 사용하여 각 컨트롤의 상태를 확인할 수 있으며 오류 메시지 표시는 Custom Validator에서도 처리됩니다. 앞서 언급 한 JS (ClientID)를 작성해야하며 방문자가 JavaScrript를 해제 한 경우 서버 측 유효성 검사를 작성해야합니다. OQ가 떨어질 수 있습니다. –

+0

이것도 언급 할 필요가 있습니다. 유효성 검사 컨트롤을 사용하는 경우 유효한 데이터에 의존하는 작업을 수행하기 전에 코드에서 Page.IsValid를 확인해야합니다. mmm'kay? –

2

JavaScript 코드에서 lblError을 ID로 사용하면 안됩니다. 대신 다음을 사용해야합니다.

물론 이것은 ASP.NET 파일에서 JavaScript 코드를 생성하는 경우에만 가능합니다.

+0

Nope가 작동하지 않았습니다. – Etienne

0

JQuery와 한 번 봐,이

document.getElementById('<%= lblError.ClientID %>').style.display = ""; or 
document.getElementById('<%= lblError.ClientID %>').style.display = "block" 

확인을 사용하여 원하는 이벤트에 대신 페이지에 렌더링 할 때 (ID 년대와는 달리) 변경되지 않습니다 아이디의

0

의 클래스에 의해 선택할 수 있습니다 클라이언트 측 대신에 이것을 시도해 서버 측으로 만든다. 먼저 lblEror.visible = false를 사용하여 invisible을 설정 한 formload 이벤트에서 보이지 않게 설정하고 html에서 style = "display : none"을 제거합니다. 그런 다음 원하는 이벤트에서 보이지 않게하고 다시 처리 한 후에 보이지 않게합니다.

이 해결 방법을 사용하려면 엄격하게 js.try하십시오. asp 레이블에서 스타일을 제거하십시오. on body onload는 일부 js 함수에서 사용 불가능하게 만듭니다. 이제 BTN 클릭 이벤트에이

+0

그 해결책이 있다면 –

+0

메모가 작동하지 않습니다 ......... – Etienne

관련 문제