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]; ...
随机推荐
- Win10安装MySQL5.7版本 解压缩版方法
1.下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 直接点击下载项 下载后: 2.可以把解压的内容随便放到一个目录,我的是如 ...
- Alpha版本第二周小结
软工作业---Alpha版本第二周小结 姓名 学号 周前计划 每周实际工作记录 自我打分 yrz 1417 协助原型设计的完善,督促组员完成个人任务 原型优化设计未完成,但体 ...
- kubernetes Node节点部署(四)
一.部署kubelet 1.1.二进制包准备 将软件包从linux-node1复制到linux-node2中去 [root@linux-node1 ~]# cd /usr/local/src/kube ...
- SQLSERVER视图错位的解决办法
原始需求如下: 有一个表T1 create table t1 (id int not null primary key ,v1 ) ) ,'aaa'); ,'bbb'); 有一个表TS,用于记录T1中 ...
- 02 Spring IOC
我们先看看我们在没有spring之前,程序间是怎么解耦的.创建一个maven工程,整体的目录结构 1.创建dao层 IAccountDao.java package com.itzn.dao; pub ...
- XSLT格式
XSL 指扩展样式表语言(EXtensible Stylesheet Language). XSL - 不仅仅是样式表语言,包括三部分: XSLT :一种用于转换 XML 文档的语言. XPath : ...
- Jmeter+Selenium结合使用(完整篇)
selenium登录后的cookie交接给接口结合使用 一.下载webdriver插件(包含谷歌和火狐驱动),安装好之后需重启jmeter 二.在配置元件中添加jp@gc - Chrome Drive ...
- 推荐python入门书籍(爬虫方面)
学爬虫,需要理论与实践相结合,Python生态中的爬虫库多如牛毛,urllib.urllib2.requests.beautifulsoup.scrapy.pyspider都是爬虫相关的库,但是如果没 ...
- Airtest真机链接(一)
确认ADB是否能够正常连接到手机 windows系统下: 用USB线连好手机后,进入AirtestIDE文件夹,在 AirtestIDE_2019-05-09_py3_win64/airtest/co ...
- GeoJSON与GeoBuf互相转换
GeoJSON格式通常比较大,网页需要较长时间加载,可以使用GeoBuf进行压缩. 使用GeoBuf有很多好处:结构紧凑.文件小.方便编码和解码.能适用各种GeoJSON等等. 使用: 1.安装 ge ...