只允许数字,小数,负数

我有这个代码只允许在keypress()的输入字段中输入数字

if (e.which != 8 && e.which != 0 && (e.which  57)) { return false; } 

我怎样才能允许小数和减去按键?

这是一个解决方案,但我建议使用mask插件,例如: jQuery-Mask-Plugin

 $("#id").keypress(function(e){ if (e.which != 46 && e.which != 45 && e.which != 46 && !(e.which >= 48 && e.which <= 57)) { return false; } }); 
   
  $('.DecimalNumberWithNegative').keypress(function (event) { NumberPostiveNegativeWithDecimal(event, this) }); $('.DecimalNumberWithNegative').keyup(function (event) { ReplaceNegative(event, this); }); function NumberPostiveNegativeWithDecimal(evt, element) { var charCode = (evt.which) ? evt.which : event.keyCode if ( (charCode != 45 || $(element).val().indexOf('-') != -1) && (charCode != 46 || $(element).val().indexOf('.') != -1) && (charCode < 48 || charCode > 57)) evt.preventDefault(); return true; } function ReplaceNegative(event, element) { var $$this = $(element).val(); //alert($$this); var charCode = (event.which) ? event.which : event.keyCode if (charCode == 189 && $$this.indexOf('-') > 0) { value = $$this.replace('-', ''); $(element).val(value); event.preventDefault(); } } 

这是一个工作演示,检查数字是否有效,也不允许多个符号:

 $("#num").on('keyup', function() { if ($.isNumeric($(this).val())) { console.log('Valid!'); } else { console.log('Invalid!'); } }); 
   

允许数字,小数,负数

此解决方案可防止双重误差

只需在输入类中添加数字即可。

 $("input.number").on('keypress', function(e) { var caret = e.target.selectionStart; var nowStr = $(this).val().substr(0, caret) + String.fromCharCode(e.which) + $(this).val().substr(caret); if (!$.isNumeric(nowStr)) e.preventDefault(); });