只允许数字,小数,负数
我有这个代码只允许在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(); });