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

时间:2012-02-21 15:56:41

标签: javascript asp.net

我有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一起大于空白。

5 个答案:

答案 0 :(得分:2)

我认为你可以用一个CustomFieldValidator来完成这个任务。

我认为你自己非常接近答案。我会像这样总结

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

答案 1 :(得分:1)

我会使用RequiredFieldValidator

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

然后每个文本框都有一个Validator。因为你不需要任何javascript。因此,您无需在控件执行的许多页面上执行此操作。

有关详细信息,请参阅here

修改

或者您可以使用JQuery执行此操作。像这样:

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

        return args.IsValid;
    }

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

答案 2 :(得分:0)

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

...将允许您访问客户端的Text属性 - 这就是您所追求的吗?

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

编辑:我应该注意到我在这里做了一个假设,事实上,你已经熟悉了asp验证器,因为你已经使用过了 - 所以我提出了一个解决你的问题的javascript解决方案。但是,我建议你使用requiredfieldvalidators。

答案 3 :(得分:0)

如果您使用的是.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)

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

答案 4 :(得分:0)

试试这个:

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

}