asp.net验证文本框 - 至少有一个文本框必须包含数据

时间:2009-09-18 09:51:35

标签: asp.net textbox validation

我有三个文本框,我想验证它们。至少有一个文本框必须包含数据。

我该怎么做?

(文本框是家庭电话号码,工作电话号码,手机号码,我需要检查至少一种联系方式)

3 个答案:

答案 0 :(得分:9)

<script language="javascript">
     function Validate(sender, args){    
       args.IsValid = false;    
       if(args.Value != "")    
       {        
         args.IsValid = true;    
    }}</script>

上述函数不验证至少有一个文本框包含数据,它验证附加到验证程序的控件是否有数据。只需使用一个这样的自定义验证器

<asp:TextBox ID="txtHomePhone" runat="server"></asp:TextBox>
<asp:TextBox ID="txtWorkPhone" runat="server"></asp:TextBox>
<asp:TextBox ID="txtMobilePhone" runat="server"></asp:TextBox>

<asp:CustomValidator ID="cvMobilePhone" runat="server" ErrorMessage="ADASDASDA" ClientValidationFunction="Validate"
  ValidateEmptyText="true"></asp:CustomValidator>

<script language="JavaScript">
  function Validate(sender, args) {
    var txt1 = document.getElementById("<%= txtHomePhone.ClientID %>");
    var txt2 = document.getElementById("<%= txtWorkPhone.ClientID%>");
    var txt3 = document.getElementById("<%= txtMobilePhone.ClientID%>");
    args.IsValid = (txt1.value != "") || (txt2.value != "") || (txt3.value != "");
  }
</script>

如果您想重用该功能,可以向验证对象添加属性。 看看:http://alejandrobog.wordpress.com/2009/09/27/pass-your-own-arguments-to-the-clientvalidationfunction-in-a-customvalidator/

答案 1 :(得分:2)

使用自定义验证器,将ClientValidationFunction属性用于此函数。

 function validate(source, arguments) {
            var textboxes = document.getElementsByTagName("INPUT");
            for (var i = 0; i < textboxes.length; i++) {
                if (textboxes[i].type == "text" && textboxes[i].value != "") {
                    arguments.IsValid = true;
                    return;
                }
            }
            arguments.IsValid = false;
        }

答案 2 :(得分:0)

使用自定义验证器,无需循环浏览页面上的文本框,因为此方法会获取页面上的所有文本框。将为每个文本框调用ClientValidationFunction中指定的JavaScript函数,并使用与之关联的验证程序。

<asp:TextBox ID="txtHomePhone" runat="server"></asp:TextBox>
<asp:CustomValidator ID="cvHomePhone" runat="server" ErrorMessage="*" ClientValidationFunction="Validate" ControlToValidate="txtHomePhone"  ValidateEmptyText="true"></asp:CustomValidator>


<asp:TextBox ID="txtWorkPhone" runat="server"></asp:TextBox>
<asp:CustomValidator ID="cvWorkPhone" runat="server" ErrorMessage="*" ClientValidationFunction="Validate" ControlToValidate="txtWorkPhone"  ValidateEmptyText="true"></asp:CustomValidator>


<asp:TextBox ID="txtMobilePhone" runat="server"></asp:TextBox>
<asp:CustomValidator ID="cvMobilePhone" runat="server" ErrorMessage="*" ClientValidationFunction="Validate" ControlToValidate="txtMobilePhone"  ValidateEmptyText="true"></asp:CustomValidator>


<script language="javascript">
function Validate(sender, args)
{
    args.IsValid = false;
    if(args.Value != "")
    {
        args.IsValid = true;
    }
}
</script>