在javascript中验证十进制

在javascript中验证十进制,javascript,validation,decimal,Javascript,Validation,Decimal,嗨,我想知道如何为一个小数点后两位的数字编写验证代码,例如45.80 function submitform4() { var min=00.01; var max = 100.00; var num = parseInt(document.getElementById('valid').value); console.log(num); if (min > num || max < num) { alert(num +

嗨,我想知道如何为一个小数点后两位的数字编写验证代码,例如45.80

function submitform4()
{

    var min=00.01;
    var max = 100.00;
    var num = parseInt(document.getElementById('valid').value);

    console.log(num);

    if (min > num || max < num) {
        alert(num + ' is not between ' + min + ' and ' + max);
    return false;
    }
}
函数submitform4()
{
var min=00.01;
var max=100.00;
var num=parseInt(document.getElementById('valid').value);
console.log(num);
如果(最小值>数值| |最大值<数值){
警报(数值+”不在“+min+”和“+max”之间);
返回false;
}
}
这是我从我的作品中复制出来的东西,我认为我可以改变它,但没有真正起作用

我会尝试parseFloat():

函数submitform4()
{
var min=parseFloat(“00.01”);
var max=parseFloat(“100.00”);
var num=parseFloat(“200.20”);
console.log(num);
如果(最小值>数值| |最大值<数值){
警报(数值+”不在“+min+”和“+max”之间);
console.log('false');
}
}
submitform4();

否则您肯定会有错误:

未捕获的语法错误:意外数字


请参见“不工作”

您可以执行以下操作:

function submitForm(numberToEvaluate){
    var min = 0.0;
    var max = 100;

    //Instead of being passed in
    //This would be grabbed from DOM element
    var num = numberToEvaluate;


    console.log(num);

    if (min > num || max < num) {
        alert(num + ' is not between ' + min + ' and ' + max);
        return false;
    }
}

submitForm(-1);
submitForm(37);
函数提交表单(numberToEvaluate){
var min=0.0;
var max=100;
//而不是被传进来
//这将从DOM元素中获取
var num=numberToEvaluate;
console.log(num);
如果(最小值>数值| |最大值<数值){
警报(数值+”不在“+min+”和“+max”之间);
返回false;
}
}
提交形式(-1);
提交表格(37);
代码看起来很好(几乎),这取决于您打算如何使用该函数


如果在提交之前将函数用作验证,如
If(submitform4())
,则需要添加
返回true编码到函数末尾以返回true。

如果理解正确,我会这样做

这解决了几个问题:

  • JavaScript不喜欢数值
    00.01
    。改用
    0.01
  • 输入值使用
    parseFloat
    parseInt
    将舍入为整数
  • 如果成功(未定义),则返回
    true

函数submitform4(){
var MIN=0.01;
var MAX=100.00;
var input=document.getElementById('AgeGrade');
var inputValue=parseFloat(input.value);
变量为有效=(最小值>输入值| |最大值<输入值);
如果(是否有效){
input.value=inputValue.toFixed(2);//设置为小数点后2位
返回真值
}否则{
警报(inputValue+'不在“+MIN+”和“+MAX”之间);
返回false;
}
}

您到底想验证什么?还有什么不起作用?我们是否假设
45.80
是存储在
#AgeGrade
中的值?如果是这样,也许你的问题是试图将它解析为
Int
(整数)基本上我没有合适的脚本。上面的脚本是我在尝试的,但我想做的是添加一个小数点后两位的数字,我不知道如何开始代码,希望这是有意义的。对不起,还是很困惑。“我没有合适的脚本”
parseInt
只解析整数。如果要接受带小数点的数字,请使用
parseFloat
。他们输入2位小数有多重要?这不重要,如果他们输入2位小数,我要做的就是当他们输入一个数字时,它应该转换成小数,例如99变成99.00,如果输入了大于100的数字,我还需要一个错误消息。JavaScript的数字值在小数点前超过一个0时出现问题。我需要在HTML部分中输入什么?您是否尝试在JSFIDLE中进行测试?在这种情况下,html将包含从中获取值的DOM元素。AFAIK JavaScript只有一种数字类型。您只是添加了一个附加步骤。对吗?为什么要以字符串开头?@Zach L:因为OP询问的是验证
中的值,我的印象是
min
max
是常量,而不是输入。他正在查找
#ageGrade
的值,我认为可以安全地假设这是输入。不过你有一个重要的观点<代码>最小值=00.01
已损坏。他需要将此更改为
min=0.01
。它不起作用,当我将它添加到脚本中时,它实际上会把它弄乱,甚至脚本的其他部分也会停止工作:(有什么我遗漏的吗?我应该在HTML部分添加什么?我知道我想问很多问题,但我真的需要你的帮助这没关系。我有一个语法错误(
==
而不是
=
)。我真的需要开始检查我的代码了。哈哈。让我知道你现在有多忙。只是做了另一次更新,以处理将输入值调整为显示小数点后2位的问题。
toFixed(n)
将数字转换为带
n
十进制的字符串表示形式places@ZackL,那看起来好多了,它不再扰乱我的工作,但当我输入一个超出范围的数字时,它仍然不会给我一个错误,我应该在动作表单中添加什么,例如onsubmit、input type和onclick?
function submitForm(numberToEvaluate){
    var min = 0.0;
    var max = 100;

    //Instead of being passed in
    //This would be grabbed from DOM element
    var num = numberToEvaluate;


    console.log(num);

    if (min > num || max < num) {
        alert(num + ' is not between ' + min + ' and ' + max);
        return false;
    }
}

submitForm(-1);
submitForm(37);
function submitform4() {
    var MIN = 0.01;
    var MAX = 100.00;

    var input = document.getElementById('AgeGrade');
    var inputValue = parseFloat(input.value);

    var is_valid = (MIN > inputValue || MAX < inputValue);

    if (is_valid) {
        input.value = inputValue.toFixed(2); // set to 2 decimal places
        return true
    } else {
        alert(inputValue + ' is not between ' + MIN + ' and ' + MAX);
        return false;
    }
}