【发布时间】:2015-08-13 12:17:51
【问题描述】:
我已经阅读了许多与此类似的问题。并且一些解决方案有效。但是,我可以让它工作的唯一方法是允许输入字符,然后将其删除。它看起来很乱,感觉很hacky。
我首先如何防止字符被输入?
演示: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/获取keycode
【问题讨论】:
-
这可能无法处理用户将某些内容粘贴到输入字段中的情况......为了抓住这一点,您必须不断地重新检查内容 - 可能使用
settimeout。 .. -
我将只使用
patternHTML 属性并让浏览器处理将输入标记为无效。 -
@dsh 只会在我尝试提交时标记为无效。我想首先阻止它被输入。
-
@user3065931 一旦无效就会标记为无效(即输入输入时,不等到提交)。确实,它并不会阻止输入首先出现。
标签: jquery html validation input