只允许数字,小数,负数

时间:2015-04-30 20:20:50

标签: jquery keypress

我有这个代码只允许在keypress()

的输入字段中输入数字
if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
    return false;
}

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

4 个答案:

答案 0 :(得分:3)

 $('.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();
    } 
} 

答案 1 :(得分:0)

这是一个解决方案,但我建议使用掩码插件,例如: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;
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="id" />

答案 2 :(得分:0)

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

&#13;
&#13;
$("#num").on('keyup', function() {
  if ($.isNumeric($(this).val())) {
    console.log('Valid!');
  } else {
    console.log('Invalid!');
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' id="num" />
&#13;
&#13;
&#13;

答案 3 :(得分:0)

允许数字,小数,负数

此解决方案可防止双 min

只需将数字添加到输入类。

$("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();
});