在文本框中粘贴某些文本时是否检查数字(没有设置超时)

时间:2013-11-28 10:33:23

标签: javascript jquery html events

我有一个像这样的输入字段

<input type ="number"   id="numberTxt" placeholder="Number Only"/>

我正在检查该值是否为数字,并使用keypress事件清除为以下函数

    <script>
       $(document).ready(function(numberTxt){
          $('#numberTxt').keypress(function(event) {  

              var charCode = (event.which) ? event.which : event.keyCode;
              if (charCode != 45 && (charCode != 46 || $(this).val().indexOf('.') != -1) && (charCode < 48 || charCode > 57))
              {
                   return false; 
              }
              else 
                   return true;

          }); 
       });
    </script>
  

但是当我们复制粘贴一些文本(CTRL V CNTRL C)时,上面的代码是   无法正常工作

或者我在下面尝试过这个功能 但是没有得到那时的输入值 它的“”(空字符串)。 当我们复制粘贴它正确触发此功能时。

<script>
           $(document).ready(function(){
              $('#numberTxt').on("paste",function('numberTxt') {  

                 var val = $('#numberTxt').val() ;  

              }); 
           });
</script>

是使用event获取输入标记值的任何其他方法, 如果我在

之前传递了像按键功能这样的事件

复制粘贴期间检查号码的任何其他建议或答案也会有所帮助

2 个答案:

答案 0 :(得分:2)

使用.bind('input'.....

可能会感觉功能正确

http://jsfiddle.net/pxfunc/KDLjf/

获得了这个

Is it possible to get pasted text without using the setTimeout() function?

答案 1 :(得分:1)

这是验证 PASTE

上的整数值的方法
$('#numberTxt').on("paste",function(e) {  
    var $this = $(this);
    setTimeout(function(){
        var val = $this.val(), 
            regex = /^[\d]+$/;
        if( regex.test(val) ){
            $this.val( val );
        }
        else{
            $this.val('');
        }
      alert(val);    
    },0);

});

DEMO: http://jsfiddle.net/jogesh_pi/LaN8f/1/