如何限制在文本框中输入的任何特殊字符

本文关键字:输入 任何 特殊字符 何限制 文本 | 更新日期: 2023-09-27 17:55:25

如何限制在文本框中输入的任何特殊字符?我有一个文本框,用户可以在其中输入文本框以验证数据库中是否存在该 url。在我点击数据库之前,我想确保文本框中没有输入特殊字符

例如,如果某些用户尝试输入以下内容: )(*&<>&*^&*^&*$%#!@#$http://www.cnn.com!@#$%^&*()

他们粘贴或键入带有特殊字符的 url 之前,我怎么能不允许在文本框中出现?

对此的唯一期望是:如果&(&符号)位于 url 之间,则允许如下所示:

http://cnn.com/news/latest.html&id=1

如何限制在文本框中输入的任何特殊字符

使用文本框的KeyPress事件。在处理程序中,针对e.KeyChar运行要验证的正则表达式,如果找到无效字符,请将e.Handled设置为 true 。这将阻止在框中输入字符。

如果要测试整个文本,可以连接新字符和当前Text属性,并针对该属性运行表达式。

或者,在需要验证时,使用 Validating 事件测试整个输入。

编辑:为了响应garykindel发布的链接,KeyPress将是比TextChanged或MaskedTextBox更好的选择,因为前者在撤消更改之前触发事件,并且弄乱用户的输入位置,并且MaskedTextBox对于黑名单字符之类的东西太严格了。

最简单的答案是制作一种方法来去除客户端的字符。

$('#myTextBox').keyup(function()
{
     var santizedValue = '';
     for(var j = 0; j < this.value.length; j++)
        if(this.value[j].toLower() == 'a' || this.value[j].toLower() == 'b' ... )
           sanitizedValue += this.value[j];
        //Alternatively; convert the character to integer and check the ASCII range for a-z + &
     this.value = sanitizedValue;
});

你在服务器上创建了一个类似的方法(以防客户端没有javascript或破坏脚本)。