2016-08-09 2 views
0

내 트리거 코드 다음 한 유효하지 않은 경우 :방지 AsyncPostBackTrigger 텍스트 상자에 값이

<asp:AsyncPostBackTrigger ControlID="InitPay" EventName="TextChanged" /> 

내 컨트롤처럼 보이지만 :

function Val_InitPay(source, args) { 
     if (Math.floor($('#InitPay').val()) == ($('#InitPay').val()) && $.isNumeric($('#InitPay').val())) { 
      if ($('#InitPay').val() > ($("#InitPaymnet").val()) && $('#InitPay').val() < 1000) 
      { 
       args.IsValid = true; 
      } 
      else { 
       args.IsValid = false; 
      } 
     } 
     else { 
      args.IsValid = false; 
     } 
    } 
:

<label class="ccsp">Initial Payment</label><br /> 
    <asp:TextBox ID="InitPay" AutoPostBack="true" runat="server" OnTextChanged="InitPay_TextChanged" Style="width: 300px;"> 
    </asp:TextBox><b>$</b><br /> 
    <asp:CustomValidator ID="ValInitPay" ControlToValidate="InitPay" runat="server" ClientValidationFunction="Val_InitPay" OnServerValidate="ValInitPay_ServerValidate" ErrorMessage="Out of range error." Display="Dynamic"></asp:CustomValidator> 

JQuery와 기능을 확인

유효성 검사 기능의 코드는 다음과 같습니다.

protected void ValInitPay_ServerValidate(object source, ServerValidateEventArgs args) 
    { 
      if (int.TryParse(InitPay.Text, out val)) 
      { 
       if (val > 10 && val < 1000) 
       { 
        args.IsValid = true; 
       } 
       else 
       { 
        args.IsValid = false; 
        ValInitPay.ErrorMessage = "<img src='images/err_msg.png' height='11px' width='11px' style='vertial-align:middle' />Out of range"; 
       } 
      } 
      else 
      { 
       args.IsValid = false; 
       ValInitPay.ErrorMessage = "<img src='images/err_msg.png' height='11px' width='11px' style='vertial-align:middle' />Not an integer"; 
      } 

    } 

이제 입력란에 잘못된 입력을 입력하면 트리거 기능이 빠르게 실행됩니다. 오류가 발생하지만 트리거가 발생합니다. 값이 유효하지 않을 때 트리거를 멈출 수있는 방법이 있습니까?

감사합니다.

답변

0

e.preventdefault() 입력 만 유효하지 않은 모든 코드 경로에서 e.preventdefault() 함수를 사용하는 경우 서버 트립을 중지 할 수 있습니다. 코드는 다음과 같습니다.

function Val_InitPay(source, args) { 
    if (Math.floor($('#InitPay').val()) == ($('#InitPay').val()) && $.isNumeric($('#InitPay').val())) { 
     if ($('#InitPay').val() > ($("#InitPaymnet").val()) && $('#InitPay').val() < 1000) 
     { 
      args.IsValid = true; 
     } 
     else { 
      args.IsValid = false; 
      e.preventdefault() 
     } 
    } 
    else { 
     args.IsValid = false; 
     e.preventdefault() 
    } 
} 
관련 문제