JS验证小数问题

shangezi 2009-03-30 10:22:57
现在有3个文本框,分别是 单价 , 数量 和 邮费,这3个必须做出一下的验证

单价 : 金额必须是大于0.01及小于10000000.00的数字(小数最多为2位)

数量 : 必须是大于0件,小于10000件

邮费 : 必须是大于0.01及小于10000000.00的数字(小数最多为2位)

好像要考虑好几个问题,一是只能输入数字,二是只能只有1个小数点,三是不能有负数,希望大家指点
...全文
1728 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
老9 2011-03-10
  • 打赏
  • 举报
回复
用js正则表达式两位小数点,下面正则表达式验证的输入数字,如:50,50.0或50.00
/(^(0|[1-9]+)\.\d{0,2}$)|(^(0|[1-9]+)$)/
  • 打赏
  • 举报
回复
<SCRIPT> 
function check(obj)
{
var re=/^(0|[1-9]+)(\.\d{1,2})?$/;
if(!re.test(obj.value))
{
alert('单价只能由数字组成且最多带有2位小数')
}
if(obj.value<0.01||obj.value>10000000.00)
{
alert('单价只能大于0.01及小于10000000.00')
}
}
</SCRIPT>


单价:<input onblur="check(this)">



这样不就可以包含整数了?
xiongzhijian 2009-03-30
  • 打赏
  • 举报
回复
/^\d{0,8}|\d{0,8}(?:\.)\d{0,2}$/
  • 打赏
  • 举报
回复
还有简写为:

var re=/^(0|[1-9]+)(\.\d{1,2})?$/;
  • 打赏
  • 举报
回复
你没看到我的中文写着什么吗?
单价只能由数字组成且带有2位小数,格式为0.00

如果你想要整数也可以,简单

var re=/^\d{,}$|^(0|[1-9]+)\.\d{2}$/;
即可
shangezi 2009-03-30
  • 打赏
  • 举报
回复
不好意思,刚刚我说的是5,6楼的大哥
shangezi 2009-03-30
  • 打赏
  • 举报
回复
楼上的好像跟我的要求有很多出入,最少我输入个整数也会报错,这是不对的啊
EssenChen 2009-03-30
  • 打赏
  • 举报
回复
“好像要考虑好几个问题,一是只能输入数字,二是只能只有1个小数点,三是不能有负数,希望大家指点”

一和三可以用
onKeyUp="value=value.replace(/[^.0-9]/g,'')" onchange="value=value.replace(/[^.0-9]/g,'')"
解决

二(还有小数点后的位数)可以放到JS函数里面判断
  • 打赏
  • 举报
回复
<SCRIPT> 
function check(obj)
{
var re=/^(0|[1-9]+)\.\d{2}$/;
if(!re.test(obj.value))
{
alert('单价只能由数字组成且带有2位小数,格式为0.00')
}
if(obj.value<0.01||obj.value>10000000.00)
{
alert('单价只能大于0.01及小于10000000.00')
}
}
</SCRIPT>


单价:<input onblur="check(this)">
  • 打赏
  • 举报
回复
<SCRIPT> 
function check(obj)
{
var re=/^(0|[1-9]+)\.\d{0,2}$/;
if(!re.test(obj.value))
{
alert('单价只能由数字组成且带有2位小数,格式为0.00')
}
if(obj.value<0.01||obj.value>10000000.00)
{
alert('单价只能大于0.01及小于10000000.00')
}
}
</SCRIPT>


单价:<input onblur="check(this)">
shangezi 2009-03-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 licip 的回复:]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<SCRIPT LANGUAGE="JavaScript">
<!--
function checkNum(obj){
var val = obj.value;
var fval = parseFloat(val);
if(isNaN(f…
[/Quote]

这位大哥,我测试了你的代码,还有一点小问题,就是可以输入2个小数点的
licip 2009-03-30
  • 打赏
  • 举报
回复
数量与邮费差不多,照着写吧.
licip 2009-03-30
  • 打赏
  • 举报
回复
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<SCRIPT LANGUAGE="JavaScript">
<!--
function checkNum(obj){
var val = obj.value;
var fval = parseFloat(val);
if(isNaN(fval)){
alert('not number');
return;
}else{
var sval = new String(fval);
var i = sval.indexOf(".");
if(i>=0){
var ssval = sval.substring(i+1);
if(ssval.length > 2){
alert('只能是小于两位小数点的数');
return;
}
}

if(fval<=0.01 || fval>= 10000000.00){
alert("金额必须是大于0.01及小于10000000.00的数字");
return;
}
}
}
//-->
</SCRIPT>
</HEAD>

<BODY>
单价:<input onblur="checkNum(this)">
</BODY>
</HTML>
jol_boy 2009-03-30
  • 打赏
  • 举报
回复
正则比较方便!不过对正则我比较头大~~不会写,呵呵。等待高手,帮你顶!

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧