js实现文本框支持加减运算的方法


Posted in Javascript onAugust 19, 2015

本文实例讲述了js实现文本框支持加减运算的方法。分享给大家供大家参考。具体如下:

这是一个网页表单效果,让表单内的文本框支持加减运算,不过你要按正确的运算式输入,要不然它没有那么智能哦,比如输入1+5,文本框旁边会显示计算结果,这要归功于JavaScript的功能。

运行效果截图如下:

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>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
Javascript 兼容firefox的一些问题
May 21 Javascript
判断javascript的数据类型(示例代码)
Dec 11 Javascript
使用jquery操作session方法分享
Jan 22 Javascript
JS实现来回出现文字的状态栏特效代码
Oct 31 Javascript
JS实现DIV容器赋值的方法
Dec 14 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
Apr 14 Javascript
jquery实现自定义图片裁剪功能【推荐】
Mar 08 Javascript
JS正则替换去空格的方法
Mar 24 Javascript
vue系列之requireJs中引入vue-router的方法
Jul 18 Javascript
JavaScript循环遍历你会用哪些之小结篇
Sep 28 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
Nov 02 Javascript
前端JavaScript大管家 package.json
Nov 02 Javascript
JS实现方向键切换输入框焦点的方法
Aug 19 #Javascript
纯CSS3代码实现滑动开关效果
Aug 19 #Javascript
js实现input框文字动态变换显示效果
Aug 19 #Javascript
jQuery左侧大图右侧小图焦点图幻灯切换代码分享
Aug 19 #Javascript
js实现Form栏显示全格式时间时钟效果代码
Aug 19 #Javascript
easyui Droppable组件实现放置特效
Aug 19 #Javascript
js实现简单的联动菜单效果
Aug 19 #Javascript
You might like
中国第一家无线电行
2021/03/01 无线电
php 时间计算问题小结
2009/01/04 PHP
mcrypt启用 加密以及解密过程详细解析
2013/08/07 PHP
thinkphp循环结构用法实例
2014/11/24 PHP
PHP 接入支付宝即时到账功能
2016/09/18 PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
2017/02/05 PHP
Yii2中多表关联查询hasOne hasMany的方法
2017/02/15 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
2017/05/20 PHP
Laravel框架中缓存的使用方法分析
2019/09/06 PHP
用原生js做个简单的滑动效果的回到顶部
2014/10/15 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
jquery+json实现动态商品内容展示的方法
2016/01/14 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
微信小程序 新建登录页并实现tabBar隐藏
2017/06/13 Javascript
详解node如何让一个端口同时支持https与http
2017/07/04 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
JS基于对象的特性实现去除数组中重复项功能详解
2017/11/17 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
vue-video-player视频播放器使用配置详解
2020/10/23 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
python序列化与数据持久化实例详解
2019/12/20 Python
Python序列类型的打包和解包实例
2019/12/21 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
2021年的Python 时间轴和即将推出的功能详解
2020/07/27 Python
纯css3实现宠物小鸡实例代码
2018/10/08 HTML / CSS
html5贪吃蛇游戏使用63行代码完美实现
2013/06/25 HTML / CSS
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
成品仓管员岗位职责
2013/12/11 职场文书
小学生打架检讨书
2014/01/26 职场文书
讲党性心得体会
2014/09/03 职场文书
群众路线教育实践活动学习笔记内容
2014/11/06 职场文书
升学宴家长致辞
2015/07/27 职场文书
golang日志包logger的用法详解
2021/05/05 Golang
java解析XML详解
2021/07/09 Java/Android