Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何防止用户使用jQuery在文本框中输入特定字符?_Javascript_Jquery_Jquery Events - Fatal编程技术网

Javascript 如何防止用户使用jQuery在文本框中输入特定字符?

Javascript 如何防止用户使用jQuery在文本框中输入特定字符?,javascript,jquery,jquery-events,Javascript,Jquery,Jquery Events,我有一个正则表达式,它将与用户的按键匹配。我被它缠住了 这是我目前的代码: <script type="text/javascript"> $('input.alpha[$id=tb1]').keydown(function (e) { //var k = e.which; //var g = e.KeyCode; var k = $(this).val(); //var c = String.fromCharC

我有一个正则表达式,它将与用户的按键匹配。我被它缠住了

这是我目前的代码:

<script type="text/javascript">
    $('input.alpha[$id=tb1]').keydown(function (e) {
        //var k = e.which;
        //var g = e.KeyCode;
        var k = $(this).val();
        //var c = String.fromCharCode(e.which);
        if (k.value.match(/[^a-zA-Z0-9 ]/g)) {
            e.preventDefault();
        }
    });
</script>

$('input.alpha[$id=tb1]').keydown(函数(e){
//var k=e,其中;
//var g=e.KeyCode;
var k=$(this.val();
//var c=String.fromCharCode(e.which);
如果(k值匹配(/[^a-zA-Z0-9]/g)){
e、 预防默认值();
}
});

这里的目标是防止用户键入正则表达式中的字符。

您使用
keypress
而不是
keydown
,并阻止默认操作

例如,这可以防止在文本输入中键入
w

$("#target").keypress(function(e) {
  if (e.which === 119) { // 'w'
    e.preventDefault();
  }
});
|

更新:如果应用正则表达式给您带来麻烦:

$("#target").keypress(function(e) {
  if (String.fromCharCode(e.which).match(/[^A-Za-z0-9 ]/)) {
    e.preventDefault();
  }
});
|

尝试使用以下方法:


“这是IE9上的错误消息。”:在哪里?为什么
k.value
,当
k=$(this.val()
?你检查过重复的吗?我相信在这方面也有很多类似的问题。看,还有更多……我一直在调整代码,这就是它有点混乱的原因。我想做的是,如果用户在键盘上按了一个字符,它与正则表达式匹配,它将阻止默认值。@randelramirez1:我的答案有什么不清楚的地方需要我澄清吗?@randelramirez1脚本的主要问题是,
$(this).val()
是按下键之前输入的值,这意味着你不必检查最后一个按下的键..这只有一个问题。它也会阻止退格键。@MichaelS.Miller如果您也想保留退格,只需将
\x08
添加到正则表达式:
/[^a-zA-Z0-9\x08]/g
$(document).ready(function () {
  $('#tb1').keydown(function (e) {

    var k = String.fromCharCode(e.which);

    if (k.match(/[^a-zA-Z0-9]/g))
      e.preventDefault();
  });
});