2012-03-16 68 views
2

我有一个这样的单选按钮列表;从radiobuttonlist选择的数字文本框控件

<asp:RadioButtonList ID="RadioButtonFirm" runat="server" RepeatDirection="Horizontal"> 
          <asp:ListItem id="option1" runat="server" Value="Firm Code" /> 
          <asp:ListItem id="option2" runat="server" Value="Firm Name" /> 
    </asp:RadioButtonList> 

而且一个asp:Button控件

<asp:Button ID="btnSearchFirm" runat="server" OnClientClick="Validate();" Text="search" OnClick="btnSearchFirm_Click" /> 

和一个文本框

<asp:TextBox ID="txtCriteria" Width="120px" runat="server"></asp:TextBox> 

如果我选择单选按钮事务所代码,用户只需选择数字值txtCriteria文本框,否则可以输入字符串。如何验证它?

+0

写一些jQuery。捕捉radiobuttonlist中的'change'事件,并更改验证。也许创建2个不同的输入字段,并在事件处理程序中隐藏/显示它们。 – Rob 2012-03-16 08:03:13

回答

0

有许多方法可以做到这一点:

  1. 只允许用户输入数字在文本框中。这是与示例的链接。当然,当他们可以输入字符时,你也必须添加一个条件。 jQuery: what is the best way to restrict "number"-only input for textboxes? (allow decimal points)

  2. 让他们输入他们想要的任何内容,并在回发后进行服务器端验证。

  3. 允许他们输入他们想要的任何内容,并使用jquery按钮单击进行客户端验证。

  4. 您可以使用jquery隐藏和显示数字和字符串文本框,单选按钮选择并在数字文本框中添加验证码。

无论你选择做什么,始终确保你总是有服务器端验证,以确保绝对的,无论数据在云数据库是有效的。另一个原因是,用户可以禁用它们的JavaScript(不是很常见),也可能是屏幕阅读器网站的基本版本,因此您的客户端验证将被禁用。

-1

将正则表达式验证器控件添加到页面。使其无法看到。当您选择数字选项时,则在后面的代码中使该正则表达式验证器控件可见,并且当您选择其他选项时,确保再次隐藏它。现在,当你点击按钮(当选择数字选项时),它将触发正则表达式(仅检查数值)。

+1

验证不会发挥作用,直到您更改点击事件的验证组为止。 – Pankaj 2012-03-16 08:43:30

0

有几种方法可以做到这一点,尽管无论你选择哪条路线,明智的验证客户端和服务器端(如果那里有任何篡改等客户端)

一个CustomValidator控件看起来像你的情况下合理的选择,请参阅 http://msdn.microsoft.com/en-us/library/9eee01cx%28v=vs.71%29.aspx

基本上你有一个客户端JS函数设置arguments.IsValid如果txtCriteria中的值是正确的类型,基于RadioButto的选定值并将通过。如果是,则回发会火,你可以继续验证它的服务器端的OnServerValidate方法

+0

验证器不会让您在代码隐藏中移动,直到页面被验证。 – Pankaj 2012-03-16 10:15:28

+0

这是正确的 - _IF是,回传将会fire_ – mike 2012-03-16 10:36:05

+0

回发将永远不会触发,直到页面进行验证。 OP想要在第二种情况下回发。 – Pankaj 2012-03-16 10:52:44