Javascript Jquery中的按键事件

Javascript Jquery中的按键事件,javascript,jquery,Javascript,Jquery,我在表单中有许多输入类型。现在我希望用户只能在输入类型中输入整数值。输入可以是这样的110.00在之后只有两个值。但我无法获得此功能 我已经完成了INTEGER输入,但我不知道如何才能做到这一点: 代码 $(".amount_class").live("keypress",function(e){ var charCode = (e.which) ? e.which : e.keyCode; var Enteted = String.fromCharCode(e.

我在表单中有许多输入类型。现在我希望用户只能在输入类型中输入整数值。输入可以是这样的110.00之后只有两个值。但我无法获得此功能

我已经完成了INTEGER输入,但我不知道如何才能做到这一点: 代码

$(".amount_class").live("keypress",function(e){
        var charCode = (e.which) ? e.which : e.keyCode;
        var Enteted = String.fromCharCode(e.which).toLowerCase();
        if ((charCode >= 48 && charCode <= 57) || charCode == 8 || charCode == 9 || charCode == 37 || charCode == 39 || (charCode == 46 && Enteted != '.'))
            return true;
        else
        return false;
    });
$(“.amount\u class”).live(“按键”,功能(e){
var charCode=(e.which)?e.which:e.keyCode;
var ented=String.fromCharCode(e.which.toLowerCase();
如果((charCode>=48&&charCode使用如下

HTML

看看这里

Regex-
/^\d+(\.\d{0,2})$/g;

我做过实验


$(文档).ready(函数(){
$(“#输入_字段”).keyup(函数(e){
var regex=/^\d+(\.\d{0,2})$/g;
如果(!regex.test(this.value)){
这个值=“”;
}
});
});

逻辑是每次用户输入一个数字时,您必须检查两件事

  • 用户是否输入了小数点
  • 小数点是否超过两位
  • 对于第一个,您可以使用
    $(this.val().indexOf('.')!=-1


    对于第二个,您可以使用
    $(this.val().substring($(this.val().indexOf('.'),$(this.val().indexOf('.')).length.)2

    代码如下:

    $('.amount_class').keypress(function (event) {
        if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
            event.preventDefault();
        }
    
        var text = $(this).val();
    
        if ((text.indexOf('.') != -1) && (text.substring(text.indexOf('.')).length > 2)) {
            event.preventDefault();
        }
    });
    
    $('.amount\u class')。按键(函数(事件){
    if((event.which!=46 | | |$(this.val().indexOf('.')!=1)和&(event.which<48 | | event.which>57)){
    event.preventDefault();
    }
    var text=$(this.val();
    if((text.indexOf('.')!=-1)和&(text.substring(text.indexOf('.')).length>2)){
    event.preventDefault();
    }
    });
    

    我做到了这一点,为我工作得很好:

    $('.salary').live("keypress",function(e) {
            var charCode = (e.which) ? e.which : e.keyCode;
            var Enteted = String.fromCharCode(e.which).toLowerCase();
            if(!((charCode >= 48 && charCode <= 57) || charCode == 8 || charCode == 9 || (charCode == 37 && Enteted !='%') || charCode == 39 || charCode == 46)) {
                e.preventDefault();
            } 
    
            if(charCode == 46 && $(this).val().indexOf('.') != -1 && Enteted ==".") {
                e.preventDefault();
            } // prevent if already dot
            if(charCode == 46  && Enteted =="." && !$(this).val()) {
                e.preventDefault();
            } 
            if($(this).val().indexOf('.')!=-1){
                if($(this).val().split(".")[1].length >= 2){ 
                     if(charCode != 8  && charCode != 46) e.preventDefault();
                    if( isNaN( parseFloat( this.value ) ) ) return;
                    this.value = parseFloat(this.value).toFixed(2);
                }  
             }            
             return this;
        });
    
    $('.salary').live(“按键”,功能(e){
    var charCode=(e.which)?e.which:e.keyCode;
    var ented=String.fromCharCode(e.which.toLowerCase();
    如果(!((charCode>=48&&charCode=2){
    如果(charCode!=8&&charCode!=46)e.preventDefault();
    if(isNaN(parseFloat(this.value)))返回;
    this.value=parseFloat(this.value).toFixed(2);
    }  
    }            
    归还这个;
    });
    
    只需使用 toFixed值(2);
    就是这样。

    .live
    已被弃用。请改用
    .on
    代替。另外,最好是收听
    keyup
    事件,而不是
    keypress
    ,但我如何匹配110.00呢?你可以使用这个插件,我使用它,它轻量级且高效:我建议使用本机javascript解决方案,但既然你正在使用jQuery,请看一看@看看@Gaurav会帮你的out@ankur-singhal这是所有的用户输入所有的键,我想要非常具体的只有整数和一个小数,之后只有两个值,比如100.00
    <!DOCTYPE html>
    <html>
    <head>
    <script
    src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
    </script>
    <script>
    $(document).ready(function(){
    $('#input_field').keyup(function(e) {
        var regex = /^\d+(\.\d{0,2})?$/g;
        if (!regex.test(this.value)) {
            this.value = '';
    
        }
    });
      });
    </script>
    </head>
    <body>
    <input type= "text" id = "input_field" name ="input_field" value=""/>
    </body>
    </html>
    
    $('.amount_class').keypress(function (event) {
        if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
            event.preventDefault();
        }
    
        var text = $(this).val();
    
        if ((text.indexOf('.') != -1) && (text.substring(text.indexOf('.')).length > 2)) {
            event.preventDefault();
        }
    });
    
    $('.salary').live("keypress",function(e) {
            var charCode = (e.which) ? e.which : e.keyCode;
            var Enteted = String.fromCharCode(e.which).toLowerCase();
            if(!((charCode >= 48 && charCode <= 57) || charCode == 8 || charCode == 9 || (charCode == 37 && Enteted !='%') || charCode == 39 || charCode == 46)) {
                e.preventDefault();
            } 
    
            if(charCode == 46 && $(this).val().indexOf('.') != -1 && Enteted ==".") {
                e.preventDefault();
            } // prevent if already dot
            if(charCode == 46  && Enteted =="." && !$(this).val()) {
                e.preventDefault();
            } 
            if($(this).val().indexOf('.')!=-1){
                if($(this).val().split(".")[1].length >= 2){ 
                     if(charCode != 8  && charCode != 46) e.preventDefault();
                    if( isNaN( parseFloat( this.value ) ) ) return;
                    this.value = parseFloat(this.value).toFixed(2);
                }  
             }            
             return this;
        });