检查3个文本框是否为空的最佳方法

best way to check if 3 textboxes are empty

本文关键字:最佳 方法 是否 3个 文本 检查      更新时间:2023-09-26

我有3个文本框,我想检查它们加在一起是否都大于空白。实现这一目标的最佳方法是什么?

    <asp:TextBox ID="tbDate" runat="server"></asp:TextBox>
    <asp:TextBox ID="tbHour" runat="server"></asp:TextBox>
    <asp:TextBox ID="tbMinutes" runat="server"></asp:TextBox>
<asp:CustomValidator ID="cvDateControlValidator" runat="server" ErrorMessage="Invalid Date"
    ValidateEmptyText="True" ClientValidationFunction="validateDateOnClient" ControlToValidate="tbDate"
    Display="Dynamic"></asp:CustomValidator>
<script type="text/javascript">   
    function validateDateOnClient(sender, args) {
        if (args.Value.length > 0)
            args.IsValid = false;
        return args.IsValid;
    }
</script>

一个建议是:

if (tbDate.value != '' || tbHour.value != '' || tbMinutes.value != '')

在执行客户端验证之前,我想确保tbDate、tbHour和tbMinutes加在一起大于空白。

我认为您可以使用单个CustomFieldValidator来完成此操作。

我认为你自己已经很接近答案了。我会这样求长度的总和

if (tbDate.value.length + tbHour.value.length + tbMinutes.value.length > 0)

我会使用RequiredFieldValidator

<asp:RequiredFieldValidator id="RequiredFieldValidator2"
                    ControlToValidate="yourTextBox"
                    Display="Static"
                    ErrorMessage="*"
                    runat="server"/> 

然后每个文本框有一个验证器。因为您不需要任何javascript。因此,您不需要像控件那样在许多页面上进行工作。

请参阅此处了解更多信息

编辑

或者您可以使用JQuery来完成此操作。类似这样的东西:

function validateDateOnClient(sender, args) {
        $('input[type=text]').each( function() {
          if(($this).val().length==0) {
             args.IsValid = false;
          }
     });
        return args.IsValid;
    }

这将循环页面上的所有文本框。

document.getElementById('<%=tbDate.ClientID%>').value

将允许您访问客户端上的Text属性-这就是您想要的吗?

使用它,您显然可以对检索到的字符串执行任何类型的检查。

编辑:我应该注意到,我在这里假设,事实上,你已经熟悉asp验证器了,因为你已经使用过它们了——所以我为你的问题提出了一个javascript解决方案。然而,我建议您使用所需的字段验证器。

如果您使用的是.NET 4,则可以执行此

(!string.IsNullOrWhiteSpace(tbDate.Text) || !string.IsNullOrWhiteSpace(tbHour.Text)
|| !string.IsNullOrWhiteSpace(tbMinutes.Text))

使用早期版本,您可以进行

(tbDate.Text.Trim().Length > 0 || tbHour.Text.Trim().Length > 0 ||
tbMinutes.Text.Trim().Length > 0)

这样就知道你是否只有一堆空格

试试这个:

if(tbDate.value > 0 || tbHour.value > 0 || tbMinutes.value > 0)
{
}