<!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实现文本框支持加减运算的方法的更多相关文章

  1. velocity加减运算注意格式 ,加减号的左右都要有空格

    velocity加减运算注意格式 ,加减号的左右都要有空格 #set( $left= $!biz.value - $vMUtils.getReturnMoney($!biz.billBuy) )

  2. [Swift]LeetCode592. 分数加减运算 | Fraction Addition and Subtraction

    Given a string representing an expression of fraction addition and subtraction, you need to return t ...

  3. C语言中指针变量的加减运算

    1.指针变量中存放的是地址值,也就是一个数字地址,例如某指针变量中的值是0x20000000,表示表示此指针变量存放的是内存中位于0x20000000地方的内存地址.指针变量可以加减,但是只能与整型数 ...

  4. 大整数加减运算的C语言实现

    目录 大整数加减运算的C语言实现 一. 问题提出 二. 代码实现 三. 效果验证 大整数加减运算的C语言实现 标签: 大整数加减 C 一. 问题提出 培训老师给出一个题目:用C语言实现一个大整数计算器 ...

  5. Linux中日期的加减运算

    Linux中日期的加减运算 目录 在显示方面 在设定时间方面 时间的加减 正文 date命令本身提供了日期的加减运算. date 可以用来显示或设定系统的日期与时间. 回到顶部 在显示方面 使用者可以 ...

  6. JS日期、月份的加减

    JS日期.月份的加减 需要注意的是返回的月份是从0开始计算的,也就是说返回的月份要比实际月份少一个月,因此要相应的加上1 // 日期,在原有日期基础上,增加days天数,默认增加1天 function ...

  7. void *指针的加减运算

    1.手工写了一个程序验证void *指针加减运算移动几个字节: //本程序验证空类型指针减1移动几个字节 #include <stdio.h> int main(int argc, cha ...

  8. Leetcode 592.分数加减运算

    分数加减运算 给定一个表示分数加减运算表达式的字符串,你需要返回一个字符串形式的计算结果. 这个结果应该是不可约分的分数,即最简分数. 如果最终结果是一个整数,例如 2,你需要将它转换成分数形式,其分 ...

  9. C语言中指针的加减运算

    参考文章,值得一看 char arr[3]; printf("arr:\n%d\n%d\n%d\n", arr, arr + 1, arr + 2); char *parr[3]; ...

随机推荐

  1. 如何修改配置文件:CentOS下SSH端口修改

    CentOS各发行版中SSH端口默认为22,如果正式做站或其它用途,为了提高安全性就需要修改掉默认的SSH端口号,防止被有心人穷举密码.部分VPS提供商,若您的VPS服务器SSH遭受多次的暴力破解,可 ...

  2. thrift入门(1)

    参考:https://www.jianshu.com/p/4723ce380b0e https://www.cnblogs.com/carlos-mm/p/6297197.html 一. 什么是Thr ...

  3. What Does Reconciliation Mean in Accounting

    Account reconciliation is the process of comparing transactions you have recorded using internal rec ...

  4. JDBC课程4--使用PreparedStatement进行增删查改--封装进JDBCTools的功能中;模拟SQL注入 ; sql的date()传入参数值格式!

    主要内容: /*SQL 的date()需要传入参数值: preparedStatement().setDate(new java.util.Date().getTime()); 熟悉了使用Prepar ...

  5. Eigen

    Eigen: https://eigen.tuxfamily.org/dox/GettingStarted.html

  6. JS转换HTML转义符 [转]

    最近有个需求,就是后台系统编辑文章内容存到后台,前端这边获取到是转义后的字符串,如果直接将转义后的内容写在页面上,html标签不会被解析.网上找到觉得不错的功能函数,这里记录一下 //去掉html标签 ...

  7. ubuntu下卸载旧Mysql并安装新Mysql(升级)

    由于从apt-get下安装的Mysql不是最新版的,所以,需要升级.先卸载,再安装. 1.卸载 先看mysql是否在运行: netstat -tap | grep mysql 然后 sudo apt- ...

  8. 自定义的JSP标签

    JSP标签 JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. 除了这 ...

  9. eslint 对下一行不要校验报错

    eslint 对下一行不要校验报错: <--eslint-disable-next-line--> <div>todo</div> 扩展知识: stylelint ...

  10. javascript权威指南第14章 表单脚本示例代码

    HTML部分 <!DOCTYPE html> <html> <head> <title></title> </head> < ...