2012-03-07 24 views
1

我如何能实现一个clientsidevalidation包含以下文本所需的文本框:必填项检查在asp.net文本框

[要求名称] [需要地址]

Preferrably我想用ASP :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 – 2012-03-07 01:27:08

回答

1

实现它的一种方法是使用JavaScript的正则表达式并仅验证它的客户端。因此,在所提到的代码中,只有在所有必需的验证都满足的情况下才会进入服务器,否则它将在摘要div标记中的屏幕上显示错误消息。

以下是所需的代码。

<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> 

希望这将解决您的问题