2016-12-17 2 views
0

Я пытался на проверки в поле даты, но он продолжает делать запись назад и не работает .. Вот в HTML:как предотвратить CustomValidator делать PostBack

<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="error" 
Display="Dynamic" SetFocusOnError="True" 
ClientValidationFunction="CheckDate" 
ControlToValidate="txtDate"> 
</asp:CustomValidator> 

и функция в js:

function CheckDate(source, args) 
    {   
     var inputDate = document.getElementById("<%=txtDate.ClientID%>"); 
     args.IsValid = false; 

     var parts = inputDate.value.split("/"); 
     var day = parseInt(parts[0], 10); 
     var month = parseInt(parts[1], 10); 
     var year = parseInt(parts[2], 10); 

     var d = new Date(); 
     var currentYear = d.getFullYear(); 
     if (year < currentYear - 50 || year > currentYear || month == 0 || month > 12) 
      args.IsValid = false; 

     var monthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 
     if (year % 4 == 0) 
      monthLength[1] = 29; 

     if (day > 0 && day <= monthDays[month - 1]) 
     { 
      args.IsValid = true;     
     } 

     return args.IsValid; 
    } 

но без успеха .. как предотвратить это?

+0

Я не думаю, что вам действительно нужен валидатор, который будет отправлен на сервер. Просто используйте форму submit Validation funcitdon – Bindrid

ответ

0

Попробуйте добавить ValidateEmptyText="true". И измените способ возвращения результата.

<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="error" 
    Display="Dynamic" SetFocusOnError="True" 
    ClientValidationFunction="CheckDate" 
    ControlToValidate="txtDate" ValidateEmptyText="true"> 
</asp:CustomValidator> 

<script type="text/javascript"> 
    function CheckDate(source, args) { 
     var inputDate = document.getElementById("<%=txtDate.ClientID%>"); 
     var result = false; 

     //validation 

     args.IsValid = result; 
    } 
</script> 

Если есть еще обратная передача после этого, то есть Javasript ошибки (например, monthLength не существует).

Смежные вопросы