在javascript中验证十进制
嗨,我想知道如何为一个小数点后两位的数字编写验证代码,例如45.80在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 +
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除非答案为false,否则将>编码到函数末尾以返回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;
}
}