防止某些字符被输入文本输入

时间:2015-08-13 12:17:52

标签: jquery html validation input

我已经阅读了许多类似的问题。一些解决方案有效。但是,我能让它工作的唯一方法是允许输入字符,然后将其删除。它看起来很乱,感觉很乱。

如何防止首先输入字符?

演示:https://jsfiddle.net/jf8bqp5z/

HTML:

<input type="text" name="test" id="test"/>

jQuery的:

$('#test').keyup(function(e){
    var $this = $(this);
    var val = $this.val();

    if( val.indexOf('.') ){
        val = parseInt(val);
        $this.val(val);
        e.preventDefault();
    }
});

其实很简单。我已为keyup切换keydown事件,只是查找keyCode:

$('#test').keydown(function(e){
    var $this = $(this);
    var val = $this.val();

    if( e.keyCode === 65 ){     //Here provide the JavaScript event keycode of the key to prevent being typed.
        e.preventDefault();
    }
});

演示:https://jsfiddle.net/j80hryvm/

注意:您可以从http://keycode.info/

获取密钥代码

2 个答案:

答案 0 :(得分:1)

我找到了这个answer,它从不打印你不想要打印的字符。

  

您可以通过阻止keyPress事件来完成此操作   发生非数字值

     

例如(使用jQuery)

$('.input-selector').on('keypress', function(e){
  return e.metaKey || // cmd/ctrl
    e.which <= 0 || // arrow keys
    e.which == 8 || // delete key
    /[0-9]/.test(String.fromCharCode(e.which)); // numbers
})
  

这说明了所有不同类型的输入(例如来自的输入)   数字键盘具有与键盘不同的代码)以及   退格,箭头键,控制/ cmd + r重新加载等

答案 1 :(得分:0)

您可能需要return false

$('#test').keyup(function(e){
    var $this = $(this);
    var val = $this.val();

    if( val.indexOf('.') ){
        val = parseInt(val);
        if (val == NaN)
            return false;
        $this.val(val);
        e.preventDefault();
    }
});