【问题标题】:ASP.Net TextBox ValidationASP.Net 文本框验证
【发布时间】:2009-04-16 13:56:32
【问题描述】:

我有 2 个文本框控件,用于输入日期值。我想要这样,如果在其中一个文本框中输入了日期,则需要另一个文本框。

这可能是一个真正的菜鸟问题,但我们将不胜感激。

提前致谢。

编辑:只是为了澄清一点。我使用比较验证器来检查输入到文本框中的值是否是日期,所以这不是问题。问题是我想要一些验证,以便如果将一个值输入到一个文本框中,则需要另一个值。否则,如果两个文本框都为空,则两者都不需要。

【问题讨论】:

  • 另一个需要日期还是只需要某种类型的输入?

标签: asp.net validation


【解决方案1】:

嗯,你可以做两件事之一。首先,正如丹麦人所说,使用 textbox1 的 textchanged 属性将 validator2 的 Enabled 属性相应地设置为 true 或 false。只需确保将 textbox1 的 autopostback 属性设置为 true。如果您将其包装在更新面板中,这样看起来会更好,这样用户就不必看到自动回发。

另一个选项是使用自定义验证器控件,您可以在 ServerValidate() 事件中编写验证逻辑。然后,您可以检查 textbox1 中输入的文本是否为日期,然后相应地验证 textbox2。

【讨论】:

  • 您还可以指定 ClientValidationFunction 以便它同时验证客户端和服务器端。
  • 谢谢,这就是我所追求的。
【解决方案2】:

如果您使用的是内置验证控件,您可以根据 txtDate1 的值在 Page_Load 方法中为 txtDate2 启用/禁用一个。

protected void Page_Load(object sender, EventArgs e)
{
   dateValidator2.Enabled != String.IsNullOrEmpty(txtDate.Text);
}

在您的 aspx 文件中;

<asp:RequiredFieldValidator ID="dateValidator2" Enabled="false" runat="server" ErrorMessage="Some message"></asp:RequiredFieldValidator>

【讨论】:

    【解决方案3】:

    为文本框 2 保留一个禁用的必填字段验证器。在 textbox1 的 textchanged 事件中启用它。确保在事件中检查 textbox1 中文本的长度,因为即使用户删除了在 textbox1 中输入的文本,也会触发 TextChanged 事件。

    【讨论】:

      【解决方案4】:

      如果您希望获得最佳用户体验,则应在客户端完成此验证。

      RequiredFieldValidator 控件实际上会生成 javascript 代码以在客户端执行验证,但它没有您正在寻找的“两者或无”功能。

      因此,最好的解决方案是自己编写 javascript。有许多框架可以使这更容易。我建议使用 jQuery。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-05
        • 2014-11-08
        • 2018-03-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多