2014-06-20 6 views
1

저는 서버 측에서 클라이언트 측 유효성 검사를 연습하고 있습니다. 이름을 확인하기 위해 클라이언트 측에 코드를 작성했으며 값을 보류 중입니다. 그러나 문제는 잘못된 값의 경우 텍스트 상자에서 포커스가 사라지 자마자 오류 메시지가 표시되지 않는다는 것입니다.CustomValidator가 자바 스크립트에서 오류 메시지를 표시하지 않습니다.

<script type="text/javascript"> 
    function validateText(osrc, args) { 
     var textvalue = args; 
     var pattern = /^[a-zA-Z.]{3,25}$/ 
     if (textvalue != null || textvalue != "") { 
      if (pattern.test(textvalue)) { 

       args.isValid = true; 
      } 
      else 
       args.isValid = false; 
     } 
     else args.isValid = false; 
     return; 
    } 
</script> 

업데이트 및 aspx 페이지의 내용, 필요한 도움이 무엇 잘못

<asp:TextBox runat="server" ID="txtFirstName" CssClass="form-control" /> 
      <asp:CustomValidator runat="server" Display="Dynamic" CssClass="text-danger" 
       ControlToValidate="txtFirstName" ToolTip="Incorrect Text" ErrorMessage="*" 
       EnableViewState="false" ValidateEmptyText="true" EnableClientScript="true" 
       Enabled="true" ClientValidationFunction="validateText"></asp:CustomValidator>//This validator is not showing the error message 

같습니다 내 구현과 같다.

+0

변경하십시오 : "var에 textvalue = 인수"에를 "var textvalue = args.Value" –

답변

2

당신은 참/거짓을 반환하는 대신 TRUE 또는 FALSEargs.IsValid의 값을 설정해야합니다. 또한 args.Value (고지 V는 대문자 임)을 사용하여 텍스트 값을 올바르게 설정해야합니다.

자바 스크립트 :

function validateText(osrc, args) { 
    var textvalue = args.Value; //notice V is uppercase! 
    var pattern = /^[a-zA-Z.]{3,25}$/ 
    if (textvalue != null || textvalue != "") { 
     if (pattern.test(textvalue)) { 
      args.IsValid = true; 
      return; //notice we ONLY return when the expression IS valid 
     } 
     args.IsValid = false; 
    } 
    args.IsValid = false; 
} 

ASPX : 그리고 당신은 단지 표현이 유효 할 때/IF 반환 해야하는

<div class="col-md-10"> 
    <asp:Label ID="Label1" runat="server" AssociatedControlID="txtFirstName" 
       CssClass="col-md-2 control-label">First Name</asp:Label> 
    <asp:TextBox runat="server" ID="txtFirstName" CssClass="form-control" /> 
    <asp:CustomValidator ID="CustomValidator1" runat="server" 
         Display="Dynamic" ControlToValidate="txtFirstName" 
         ToolTip="Incorrect Text" ErrorMessage="*" 
         EnableViewState="false" 
         ValidateEmptyText="true" 
         EnableClientScript="true" 
         Enabled="true" 
         ClientValidationFunction="validateText"> 
     Please input a valid First Name! 
    </asp:CustomValidator> 
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
           ControlToValidate="txtFirstName" 
           CssClass="text-danger" 
           ErrorMessage="First name is required" 
           ToolTip="First name is required." 
           EnableViewState="False" /> 
</div> 
+0

나는이 함수를 디버깅하여 값을 반환하지만 오류는 여전히 표시되지 않습니까? –

+0

질문에 코드를 업데이트하여 지금까지 가지고있는 것을 알 수 있도록 –

+0

코드를 업데이트했습니다. return 문에 문제가있었습니다. 표현식이 유효한 경우 IF/WHEN을 반환해야합니다. 또한 ASPX를 약간 변경했습니다. 이제 "유효한 이름을 입력하십시오!"라는 메시지가 나타납니다. 오류 –

관련 문제