2012-03-07 8 views
1

Как я могу реализовать clientsidevalidation необходимые TextFields, которые содержат следующие тексты:Обязательные поля проверки в asp.net текстовое поле

[необходимые] Имя [Адрес требуется]

Я хотел Предпочтительно связываться хотел бы использовать жереха : CustomValidator если возможно? Только если оба поля имеют данные, будет вызвана обратная передача?

 <html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 
    <script type="text/javascript">  var $j = jQuery.noConflict();</script> 
    <script type="text/javascript"> 


     function otherMessageValidator_ClientValidation(source, args) { 
      args.IsValid = false; 

      var nm = $j("#name"); 

      if (nm.val() != "" && nm.val() != "[Name required]") { 
       args.IsValid = true; 
      } 

      return args.IsValid; 
     }; 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:TextBox ID="name" runat="server" ValidationGroup="valgroup">[Name required]</asp:TextBox> 
     <asp:TextBox ID="address" runat="server" ValidationGroup="valgroup">[Address required]</asp:TextBox> 
    </div> 
    <asp:Button runat="server" ID="but1" Text="go" OnClick="but1_Click" /> 
    <asp:CustomValidator ID="MyCustomValidator" runat="server" ValidationGroup="valgroup" 
     ClientValidationFunction="otherMessageValidator_ClientValidation" ErrorMessage="At least one textbox needs to be filled in." /> 
    </form> 
</body> 
</html> 
+1

И вы не хотите использовать два RequiredFieldValidators, потому что ... ? Вам нужно только одно сообщение проверки? Для CustomValidator вы должны использовать ClientValidationFunction: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator.clientvalidationfunction.aspx –

ответ

1

Один из способов достижения этого - использование регулярного выражения из javascript и проверка его только на стороне клиента. Таким образом, в указанном коде он будет работать только на сервере, если все необходимые проверки будут выполнены иначе, он покажет сообщение об ошибке на экране в теге Summary Summary.

Ниже приведен код.

<script type="text/javascript">    
function validateFields() { 

       var message = ""; 
       var error = false; 

       var name = document.getElementById("<%=txtname.ClientID %>"); 
       var address = document.getElementById("<%=txtaddress.ClientID %>"); 

       //work as required field validation 
       if ((/\S+/.test(name.value)) == false) { 

        message += "Enter Name" + "<br>"; 
        error = true; 
       } 
       //work as required field validation 
       if ((/\S+/.test(address.value)) == false) { 

        message += "Enter Address" + "<br>"; 
        error = true; 
       } 


       if (error) { 
         document.getElementById("validationSummary").innerHTML = message; 
         document.getElementById("validationSummary").style.display = "block"; 
         return false; 
        } else { 
         document.getElementById("validationSummary").innerHTML = ""; 
         document.getElementById("validationSummary").style.display = "none"; 
         return true; 
        } 


       } 
</script> 

, и мы должны принять один DIV для отображения ValidationSummary и кнопки

<div id="validationSummary" style="display: none; float: left"> 
           </div> 
    <asp:LinkButton ID="lnkAddNew" runat="server" OnClientClick="return validateFields()" OnClick="lnkAddNewPatient_Click" >Save</asp:LinkButton> 

Надеется, что это позволит решить проблему