jQuery阻止写入字母并将逗号更改为点

时间:2016-04-26 08:45:57

标签: javascript jquery

我试图修改这段代码,但它不会工作......可能是一些小错误,但我无法调试它:(

// replace , with . and block writing letters
$(document).on("keydown", ".amount", function () {
      $(this).keydown(function(e) {
                if(e.keyCode==188 || e.keyCode==110 || e.keyCode==108){
                    e.preventDefault(); 
                    $(this).val($(this).val() + '.');
                }
          var key = e.charCode || e.keyCode || 0;
          return (key == 8 || key == 9 || key == 46 || key == 110 || key == 188 || key == 190 || (key >= 35 && key <= 40) || (key >= 48 && key <= 57) || (key >= 96 && key <= 105));                
      });
};

This is original code and it doesn't work on dynamic content 这就是为什么我要修改它!

2 个答案:

答案 0 :(得分:1)

当用户点击ForceNumericOnly的输入时,如何调用.amount方法呢?

$(document).on('focus', '.amount', function(){
    $(this).ForceNumericOnly();
});

https://jsfiddle.net/daveSalomon/r5n8xuhx/5/

您可以(应该)对其进行优化,以便在已经运行keydown代码的情况下不会再次添加ForceNumericOnly处理程序...类似于:

$.fn.ForceNumericOnly = function() {
    return this.each(function() {
        if($(this).data('forceNumberOnly'){ return; }
        $(this).data('forceNumberOnly',true);
        ...
    });
};

https://jsfiddle.net/daveSalomon/r5n8xuhx/6/

答案 1 :(得分:0)

不需要JS - 只需使用number输入:

&#13;
&#13;
<input class="amount" type="number">
&#13;
&#13;
&#13;