如何禁止用户在文本框中输入数字

3

我正在尝试制作一个文本框,不允许输入数字。

我尝试了一些代码,但没有成功。

以下是我尝试过的代码:

<asp:RegularExpressionValidator runat="server" ID="txtSurnameValidation" 
     ControlToValidate="txtSurname" ValidationExpression="[a-zA-Z ]*$" Display="Dynamic">
</asp:RegularExpressionValidator>

3
永远值得记住程序员对于名字所持有的错误观念。详见:http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ - Damien_The_Unbeliever
@Damien_The_Unbeliever 不错!很多网站都讨厌我,因为我的名字只有两个字符 :) - EdSF
2个回答

3

它正在工作,但没有显示任何消息,因为您没有在验证失败的情况下设置任何消息,所以请添加ErrorMessage="* 仅限字母",这样如果有人输入数字,就会显示这个消息。

 <asp:TextBox runat="server" ID="txtSurname"></asp:TextBox>
        <asp:RegularExpressionValidator runat="server" ID="txtSurnameValidation" 
     ControlToValidate="txtSurname" ValidationExpression="[a-zA-Z ]*$" ErrorMessage="* Alphabets Only" Display="Dynamic">
</asp:RegularExpressionValidator>

0

可能已经在这里回答了:如何防止在 .net windows forms 中的文本框中粘贴数字

基本上,您可以在 TextChanged 事件中输入代码,以防止输入或粘贴数字。您还可以利用 KeyDown 和 KeyUp 事件,但它们无法防止您粘贴数字。因此,TextChanged 是首选和推荐的。

string _latestValidText = string.Empty;
private void TextBox_TextChanged(object sender, EventArgs e)
{
    TextBox target = sender as TextBox;
    if (ContainsNumber(target.Text))
    {
        // display alert and reset text
        MessageBox.Show("The text may not contain any numbers.");
        target.Text = _latestValidText;
    }
    else
    {
        _latestValidText = target.Text;
    }
}
private static bool ContainsNumber(string input)
{
    return Regex.IsMatch(input, @"\d+");
}

2
问题标记为 [tag:asp.net] - 您不希望在每次按键时往返于服务器,并且 MessageBox.Show 也没有用处 - 即使它能工作,它也只会在服务器上显示消息,而不是在运行浏览器的机器上显示。 - Damien_The_Unbeliever

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接