单击“提交”时,如何验证多个文本框是否包含数据?

时间:2009-11-24 19:43:22

标签: c# asp.net

我有10个带字符串的已定义文本框。

单击确定按钮

时,我必须检查它们是否为空

什么是最干净的方式来检查它们以及何时功能结束。每个复选框都是空的,以给出一个特定的CSSclass。也许。 ClassError。 (突出红色)

我很高兴得到答案。

4 个答案:

答案 0 :(得分:5)

我会向他们添加RequiredFieldValidators,以及ValidationSummary控件。

编辑:您还可以使用AJAX工具包中的ValidatorCallout添加精美的AJAX效果。

编辑:验证器控件还支持客户端验证。

答案 1 :(得分:1)

使用javascript或C#?

Javascript我将创建一个文本框数组并循环遍历它。

C#只需在Panel中的FindControl或文本框的容器中运行,就可以这样了

foreach(Control C in ContainerID.Controls)
{
    if ( C is TextBox )
    {
      if ( String.IsNullOrEmpty((C as TextBox).Text))
      {
          // Do things this way
      }        
    }    
}

答案 2 :(得分:0)

这样的东西可以在客户端使用jquery:

$('input').filter(function(){return this.value=="";}).css("CSSclass");

编辑:我刚刚看到了C#标签,我将把这个留给后人,但是。

答案 3 :(得分:0)

你正在做的事情可能很简单,可以轻松地使用一些自定义的javascript代码,但我会说,一般来说,内置验证器控件比一个人可能写的简单验证例程更容易使用和更强大。除了客户端验证之外,验证器控件还执行服务器端验证,以确保提交的数据真正有效,以防有人在浏览器中禁用了javascript。

如果页面上包含验证器控件,则它们将包含一些可以调用的javascript函数,例如Page_ClientValidate()。我相信这将返回一个布尔值,告诉您验证是否通过,并将触发识别错误的可视指示器。您可以执行Page_ClientValidate('')以仅触发一组验证器控件;实际上我认为你必须这样做才能触发任何在ValidationGroup属性中有值的验证器控件的验证,因为我认为Page_ClientValidate()不会触发它们的验证逻辑。

如果您需要,可以指向自己的客户端功能的CustomValidator控件,以防您有一些特殊的验证逻辑,只能通过自定义的javascript函数实现。这很好用,因为你的自定义javascript函数将由内置的验证器框架以及你可能选择包含在页面上的任何其他内置验证器控件执行。

关于客户端验证的附注:我建议您避免执行以下操作来触发验证:

onclick="return myValidationFunction();"

因为如果有任何其他javascript代码被注入onclick事件,你的return语句将阻止它执行。所以相反,我建议这样做:

onclick="if(!myValidationFunction()) return false;"

这让我咬了很多次,以为我只是把它扔出去了。如果你有一个ASP.Net按钮,你将UseSubmitBehavior属性设置为false,这个问题尤其明显,因为它会导致按钮呈现为HTML“按钮”控件而不是“提交”控件,并且结果,执行return语句(true或false)将阻止按钮触发回发。