允许在使用NaN时输入小数点

Allow decimal point to be entered while using NaN

本文关键字:输入 小数点 NaN      更新时间:2023-09-26

我有一个我正在制作的计算器脚本,它可以防止人们输入字母或数字以外的东西。我需要允许小数点。我该怎么做呢?

$("input[type=text]").keyup(function () {
        var number = parseFloat($(this).val());
        var inc = parseFloat($(this).attr("inc"));
        var newValue = number / inc;
        $("input[type=text]").each(function () {
              if(isNaN(newValue * parseFloat($(this).attr("inc"))))
                $(this).val(0);
              else
                $(this).val(newValue * parseFloat($(this).attr("inc")));
           });
  });

如果你有一个简单的修复或一个完整的新代码块,那么请告诉我。

我需要能够有小数点。例如:3.22

JSFiddle在这里可用

try this

$("input[type=number]").keyup(function () {
    var regexp = /^[-+]?[0-9]+('.[0-9]+)?$/;
        var number = $(this).val();
    var s=regexp.test(number);
    //alert(s);
        var inc = parseFloat($(this).attr("inc"));
        var newValue = number / inc;
        $("input[type=number]").not($(this)).each(function () {
              if(!s)
      $(this).val(0);
    else
      $(this).val(newValue * parseFloat($(this).attr("inc")));
                });
        });

解决这个问题有两种方法:

  1. 您也正在更新当前输入框(您当前正在输入的输入框),这应该与其他输入框分开处理。* *修改* *:http://jsfiddle.net/RX2sL/10/

       $("input[type=text]").keyup(function () {
       var number = parseFloat($(this).val());
        var inc = parseFloat($(this).attr("inc"));
        var newValue = number / inc;
        var curr = this;
        $("input[type=text]").each(function () {
              if(isNaN(newValue * parseFloat($(this).attr("inc"))))
          $(this).val(0);
                else {
                    if(this != curr){          
          $(this).val(newValue * parseFloat($(this).attr("inc")));
                    }
                    else{
                        /* handle currrent input box */
                    }
                }
                    });
            });
    
  2. 一个更好的&更灵活的方法是在keyup事件上根据有效的十进制字符串RegExp检查字符串。regex -检查十进制(javascript)

如果你使用的是HTML5,可能有一个更简单的解决方案(我假设有一个文本框,你希望用户输入一些数字):

<input type="number" step="1" pattern="'d+"/>

点击这里阅读更多信息

您还可以控制min, max

为什么要在html元素中提到type="text"呢?如果它是数字,则不需要解析它,并且在每个函数中直接将结果附加到当前输入(因此每次输入值更改),我改变了一些东西,因此请在应用

之前检查一下。

 <input type="number" inc="1" />
    <input type="number" inc="2" />
    <input type="number" inc="3" />
    <input type="number" inc="4" />
JQUERY

$("input[type=number]").keyup(function () {
        var number = $(this).val();
        var inc = parseFloat($(this).attr("inc"));
        var newValue = number / inc;
        $("input[type=number]").not($(this)).each(function () {
              if(isNaN(newValue * parseFloat($(this).attr("inc"))))
      $(this).val(0);
    else
      $(this).val(newValue * parseFloat($(this).attr("inc")));
                });
        });
演示