js实现文本框支持加减运算的方法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>支持加减运算的文本框</title>
<meta http-equiv="content-type" content="text/html;charset=gb2312">
<style type="text/css">
body{color:#000;font-size:14px;font-family:Verdana,Arial,Helvetica,sans-serif,"宋体";}
input{border-style:solid;border-color:#868275;background-color:#f9f9f9;border-width:1px;color:#505050;vertical-align:middle;}
</style>
<script language=javascript>
function FloatAdd(arg1,arg2){
var r1,r2,m;
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2))
return (arg1*m+arg2*m)/m
}
function FloatSubtr(arg1,arg2){
return FloatAdd(arg1,-arg2);
}
function IsMoney(Money){
if(/^[\d|+|.|-]+$/.test(Money)) return true;
return false;
}
function result(){
str=document.getElementById("buy").value;
if(!(IsMoney(str))){
document.getElementById("amount").innerHTML ="无效金额";
return false;
}
var len=str.length,money=0,Num=0;
var NumStr="",ctrlflag="x",cflag=0;
for(var i=0;i<len; i++){
c= str.charAt(i);
if((c=="+")||(c=="-")){
if(i+1<len){
if ((str.charAt(i+1)=="+")||(str.charAt(i+1)=="-")) continue;
}
if((NumStr!="")&&(isNaN(NumStr))){
if(isNaN(NumStr)){
document.getElementById("amount").innerHTML ="输入无效金额";
return false;
}
}
if(NumStr!=""){
//alert("i:"+i+"NumStr:"+NumStr);
if ((ctrlflag=="+")||(ctrlflag=="x")){
Num=parseFloat(NumStr);
//alert(ctrlflag+"money:"+money+"Num:"+Num);
money=FloatAdd(money,Num);
NumStr="";
Num=0;
ctrlflag=c;
}
else{
//alert(money+"里面减了"+NumStr);
Num=parseFloat(NumStr);
money=FloatSubtr(money,Num);
NumStr="";
Num=0;
ctrlflag=c;
}
}
else{
ctrlflag=c;
}
continue;
}
else{
NumStr=NumStr+""+c;
}
}
if((NumStr!="")&&(isNaN(NumStr))){
if (isNaN(NumStr)){
document.getElementById("amount").innerHTML ="无效金额"+NumStr;
return false;
}
}
if((ctrlflag=="-")&&(NumStr!="")){
Num=parseFloat(NumStr);
money=FloatSubtr(money,Num);
}
if(((ctrlflag=="+")||(ctrlflag=="x"))&&((NumStr!=""))){
Num=parseFloat(NumStr);
money=FloatAdd(money,Num);
}
document.getElementById("amount").innerHTML =money;
}
</script>
</head>
<body>
请输入加减计算式:<input id="buy" name="buy" maxlength="30" type="text" onkeyup="javascript:result();">
<span id="amount"></span>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>支持加减运算的文本框</title>
<meta http-equiv="content-type" content="text/html;charset=gb2312">
<style type="text/css">
body{color:#000;font-size:14px;font-family:Verdana,Arial,Helvetica,sans-serif,"宋体";}
input{border-style:solid;border-color:#868275;background-color:#f9f9f9;border-width:1px;color:#505050;vertical-align:middle;}
</style>
<script language=javascript>
function FloatAdd(arg1,arg2){
var r1,r2,m;
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2))
return (arg1*m+arg2*m)/m
}
function FloatSubtr(arg1,arg2){
return FloatAdd(arg1,-arg2);
}
function IsMoney(Money){
if(/^[\d|+|.|-]+$/.test(Money)) return true;
return false;
}
function result(){
str=document.getElementById("buy").value;
if(!(IsMoney(str))){
document.getElementById("amount").innerHTML ="无效金额";
return false;
}
var len=str.length,money=0,Num=0;
var NumStr="",ctrlflag="x",cflag=0;
for(var i=0;i<len; i++){
c= str.charAt(i);
if((c=="+")||(c=="-")){
if(i+1<len){
if ((str.charAt(i+1)=="+")||(str.charAt(i+1)=="-")) continue;
}
if((NumStr!="")&&(isNaN(NumStr))){
if(isNaN(NumStr)){
document.getElementById("amount").innerHTML ="输入无效金额";
return false;
}
}
if(NumStr!=""){
//alert("i:"+i+"NumStr:"+NumStr);
if ((ctrlflag=="+")||(ctrlflag=="x")){
Num=parseFloat(NumStr);
//alert(ctrlflag+"money:"+money+"Num:"+Num);
money=FloatAdd(money,Num);
NumStr="";
Num=0;
ctrlflag=c;
}
else{
//alert(money+"里面减了"+NumStr);
Num=parseFloat(NumStr);
money=FloatSubtr(money,Num);
NumStr="";
Num=0;
ctrlflag=c;
}
}
else{
ctrlflag=c;
}
continue;
}
else{
NumStr=NumStr+""+c;
}
}
if((NumStr!="")&&(isNaN(NumStr))){
if (isNaN(NumStr)){
document.getElementById("amount").innerHTML ="无效金额"+NumStr;
return false;
}
}
if((ctrlflag=="-")&&(NumStr!="")){
Num=parseFloat(NumStr);
money=FloatSubtr(money,Num);
}
if(((ctrlflag=="+")||(ctrlflag=="x"))&&((NumStr!=""))){
Num=parseFloat(NumStr);
money=FloatAdd(money,Num);
}
document.getElementById("amount").innerHTML =money;
}
</script>
</head>
<body>
请输入加减计算式:<input id="buy" name="buy" maxlength="30" type="text" onkeyup="javascript:result();">
<span id="amount"></span>
</body>
</html>
js实现文本框支持加减运算的方法的更多相关文章
- velocity加减运算注意格式 ,加减号的左右都要有空格
velocity加减运算注意格式 ,加减号的左右都要有空格 #set( $left= $!biz.value - $vMUtils.getReturnMoney($!biz.billBuy) )
- [Swift]LeetCode592. 分数加减运算 | Fraction Addition and Subtraction
Given a string representing an expression of fraction addition and subtraction, you need to return t ...
- C语言中指针变量的加减运算
1.指针变量中存放的是地址值,也就是一个数字地址,例如某指针变量中的值是0x20000000,表示表示此指针变量存放的是内存中位于0x20000000地方的内存地址.指针变量可以加减,但是只能与整型数 ...
- 大整数加减运算的C语言实现
目录 大整数加减运算的C语言实现 一. 问题提出 二. 代码实现 三. 效果验证 大整数加减运算的C语言实现 标签: 大整数加减 C 一. 问题提出 培训老师给出一个题目:用C语言实现一个大整数计算器 ...
- Linux中日期的加减运算
Linux中日期的加减运算 目录 在显示方面 在设定时间方面 时间的加减 正文 date命令本身提供了日期的加减运算. date 可以用来显示或设定系统的日期与时间. 回到顶部 在显示方面 使用者可以 ...
- JS日期、月份的加减
JS日期.月份的加减 需要注意的是返回的月份是从0开始计算的,也就是说返回的月份要比实际月份少一个月,因此要相应的加上1 // 日期,在原有日期基础上,增加days天数,默认增加1天 function ...
- void *指针的加减运算
1.手工写了一个程序验证void *指针加减运算移动几个字节: //本程序验证空类型指针减1移动几个字节 #include <stdio.h> int main(int argc, cha ...
- Leetcode 592.分数加减运算
分数加减运算 给定一个表示分数加减运算表达式的字符串,你需要返回一个字符串形式的计算结果. 这个结果应该是不可约分的分数,即最简分数. 如果最终结果是一个整数,例如 2,你需要将它转换成分数形式,其分 ...
- C语言中指针的加减运算
参考文章,值得一看 char arr[3]; printf("arr:\n%d\n%d\n%d\n", arr, arr + 1, arr + 2); char *parr[3]; ...
随机推荐
- Docker - Cheap sheet
** IMAGE ** $docker image Delete image : $docker image rm image_id make sure all containers be delet ...
- 50道sql练习题及答案与详细分析
数据表介绍 --1.学生表 Student(SId,Sname,Sage,Ssex) --SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course( ...
- 大数据之路week06--day01(Xshell和Xftp的下载与安装、配置JDK)
上一节,介绍了VMware的下载与安装.安装CentOS 在企业中,我们大多数是不会有界面化操作的,领导也不会直接给你账户的,我们需要自己从外部链接到Linux系统进行操作,对Linux系统的操作都在 ...
- 神经网络(3)---如何表示hypothesis,如何表示我们的model
大脑中的神经元 我们的大脑都充满了上图所示的神经元,神经元有一个细胞体(cell body),还有一些input wires,专业词汇叫做树突(dendrite),它们从其它地方接收输入信息,神经元还 ...
- git 和 svn比较
SVN和Git 介绍,区别,优缺点,适用范围总结 原创 2016年01月29日 15:17:36 15774 介绍 SVN SVN是Subversion的简称,是一个开放源代码的版本控制系统, ...
- JS正则表达式完整教程
JS正则表达式完整教程(略长) 引言 亲爱的读者朋友,如果你点开了这篇文章,说明你对正则很感兴趣. 想必你也了解正则的重要性,在我看来正则表达式是衡量程序员水平的一个侧面标准. 关于正则表达式的教程, ...
- 基于css文件编写一个简单的html前端页面
因为文本原因,文件不能直接上传,以压缩包的形式上传上来 参考下载路径:https://i-beta.cnblogs.com/files
- pip 安装包 不行 自己下载whl 包自己安装
https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
- 005__C#修改软件图标
(一)项目右键属性 (二)应用程序-->图标 图标转换:http://www.faviconico.org/ (三)窗体右键属性更改窗体里面的图标 (四)修改名字
- 二十一.构建memcached服务、LNMP+memcached、PHP的本地Session信息、PHP实现session共享
proxy client web1 web2 1.构建memcached服务 ]# yum -y install memcached ]# cat /etc/sysconfig/memcached ...