不仅在'keypress'事件上允许浮点'输入'

时间:2017-05-11 15:53:20

标签: javascript jquery validation input keypress

我有这个代码接受有效的intfloat号码。

$("input").on("keypress", function(event) {
       $(this).val($(this).val().replace(/[^0-9\.]/g, ''));
       if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
         event.preventDefault();
       }
});

但是,我无法通过copy-pasterightclick-paste事件捕获用户输入数据。

我尝试$("input").on("input",...但没有工作。请参阅下面的小提琴演示。

Fiddle Demo

1 个答案:

答案 0 :(得分:1)

您可以收听粘贴事件并仅在0毫秒setTimeout之后检查数字,以便粘贴该值。您会看到任何粘贴的闪光,因此它不是理想的解决方案,但可能是可行的。

$("input").on("keypress", function(event) {  
  $(this).val($(this).val().replace(/[^0-9\.]/g, ''));   
  if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
    event.preventDefault();
  }
});


$("input").on("paste", function(event) {
  var element = $(this);
   setTimeout(function(){
     element.val(element.val().replace(/[^0-9\.]/g, ''));
   }, 0);
});