如何限制在文本框中输入的任何特殊字符? 我有一个文本框,用户可以在文本框中输入以验证数据库中是否存在URL。在我点击数据库之前,我想确保文本框中没有输入特殊字符
例如,如果某个用户尝试输入以下内容:
)(*&<>&*^&*^&*$%#!@#$http://www.cnn.com!@#$%^&*()
在他们粘贴或输入带有特殊字符的网址之前,我怎么能不允许进入文本框?
对此的唯一考虑是:&
(&符号)是允许的,如果它位于这样的URL之间:
http://cnn.com/news/latest.html&id=1
答案 0 :(得分:1)
使用文本框的KeyPress
事件。在处理程序中,运行要针对e.KeyChar
验证的正则表达式,如果找到无效字符,请将e.Handled
设置为true
。这样可以防止在框中输入字符。
如果要测试整个文本,可以连接新字符和当前Text
属性,并针对该属性运行表达式。
或者,在需要验证时使用Validating
事件来测试整个输入。
修改:为响应the link garykindel posted,KeyPress
将是比TextChanged
或MaskedTextBox更好的选择,因为前者会在撤消之前触发事件更改,以及用户输入位置的混乱,以及MaskedTextBox对于黑名单字符等内容过于紧缩。
答案 1 :(得分:0)
最简单的答案是创建一种方法来剥离客户端的字符。
$('#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或者破坏脚本)。