Javascript 为什么这个仅用于数字输入的函数在输入类型:数字时实际上不起作用?

Javascript 为什么这个仅用于数字输入的函数在输入类型:数字时实际上不起作用?,javascript,jquery,validation,input,numbers,Javascript,Jquery,Validation,Input,Numbers,发件人: 在我用 当我键入类似于1234a的内容时,值为空白 但当我键入1234a值仍然是1234 只是想知道为什么? 演示: 更新: 这工作很好为什么?如果执行控制台.log(此.value)在replace语句之前,您将看到对于非数字输入本身获取一个空白值,即this.value='' 这似乎是这种输入类型的内部实现 另一种选择: $('input')。按键(功能(e){ 如果(e.which!=8&&e.which!=0&&e.which57)){ 返回false; } }); 您希望发

发件人:

在我用

当我键入类似于
1234a
的内容时,值为空白

但当我键入
1234a
值仍然是
1234

只是想知道为什么?

演示:


更新:


这工作很好为什么?

如果执行
控制台.log(此.value)
在replace语句之前,您将看到对于非数字输入
本身获取一个空白值,即
this.value=''

这似乎是这种输入类型的内部实现

另一种选择:

$('input')。按键(功能(e){
如果(e.which!=8&&e.which!=0&&e.which<48 | e.which>57)){
返回false;
}
});

您希望发生什么事情?您希望使用什么类型的输入?只想使用
类型:数字
因为移动键盘将只显示数字。。。我相信如果type=number,用户只会看到手机上的数字键盘,所以你不必担心他们在字段中输入非数字。勾选“是”,但桌面浏览器如何:P@l2aelba:它在数字类型输入上运行良好。在Firefox30中,输入一个数字加上一个字母,整个输入都会被删除。有关使用数字类型输入的一些新浏览器行为的更多信息,尽管从一个明显不同的角度来看,请参阅。只是为了说明浏览器世界在这方面正在发生一些事情,W3标准并没有很好地定义这些事情。因此,如果Nikhil的解决方案对你有效的话,我会选择它。出于好奇,我在所有浏览器上都试过上面的代码,这些代码在Mozilla Firefox、Internet Explorer 11和Apple safari上都能很好地工作(即只删除非数字字符),但在Google chrome&Opera上却不行。
$('input').on('keyup',function(){
    this.value = this.value.replace(/[^0-9\.]/g,'');
});
$('input').keypress(function (e) {
    if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
        return false;
    }
});