不允许在textarea上使用“@”

时间:2014-04-17 17:54:05

标签: javascript php

我想知道我怎么能阻止,不允许它在textarea上阻止“@”的消息;如果他们介绍它会向他们发出警告。

如果我想阻止8位数字,是否相同?

谢谢!

3 个答案:

答案 0 :(得分:1)

要无法输入'@'字符,您需要按如下方式实现代码:

<textarea class="area"> </textarea>
<script>
$('.area').keypress(function(event){
  if ( event.which == 64 ) {
    event.preventDefault();
  }

});
</script>

此实现的主要关键是event.preventDefault();,用于放弃按键触发的事件。

64是与'@'相关的ASCII码

如果你想限制在8上输入的字符数,似乎<input type="text">更适合你。

答案 1 :(得分:1)

您可以使用这样的代码,它会阻止用户尝试用来输入@符号的许多类型的输入:

var text = document.getElementById('txt');
text.onkeypress = function(e){
    if(e.which === 64)
    {
        e.preventDefault();
        return false;
    }
};
text.onkeydown = function(e){
   if(e.ctrlKey==true && (e.which == '118' || e.which == '86'))
   {
       e.preventDefault();
       return false;
   }
};
text.oncontextmenu = function(e){
    e.preventDefault();
    return false;
};
text.ondrop = function(){return false; };

jsFiddle here

context menu部分与之前的IE不兼容。

注意:这只是一个很好的预防措施,我绝对建议您在后端验证此输入,因为显然有人可以修改前端页面,以便允许他们提交他们想要的任何内容。 / p>

要阻止8位数字,您必须在onsubmit处理程序中使用正则表达式函数,以检查该字段是否包含8位数字。

答案 2 :(得分:0)

您应该阻止在前端和后端使用。

在php中,您可以轻松地使用strpos()进行检查,看看是否存在@符号。您也可以使用与preg_match()

相同的正则表达式

更新:显然HTML5 textareas不支持看起来很奇怪的模式属性。所以这个前端解决方案不适用于textareas,只适用于输入。

对于HTML5,您可以使用pattern属性指定您正在使用的正则表达式。现在几乎每个浏览器都支持此功能。