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学习随笔(使用window和frame)的技巧
Mar 08 Javascript
微博@符号的用户名提示效果。(想@到谁?)
Nov 05 Javascript
JavaScript 一道字符串分解的题目
Aug 03 Javascript
js单独获取一个checkbox看其是否被选中
Sep 22 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
Mar 26 Javascript
javascript 作用于作用域链的详解
Sep 27 Javascript
seajs实现强制刷新本地缓存的方法分析
Oct 16 Javascript
JS中call和apply函数用法实例分析
Jun 20 Javascript
微信小程序自定义音乐进度条的实例代码
Aug 28 Javascript
three.js搭建室内场景教程
Dec 30 Javascript
前端js中的事件循环eventloop机制详解
May 15 Javascript
微信小程序仿今日头条导航栏滚动解析
Aug 20 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
一个MYSQL操作类
2006/11/16 PHP
Codeigniter实现多文件上传并创建多个缩略图
2014/06/12 PHP
PHP函数http_build_query使用详解
2014/08/20 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
PHP 使用二进制保存用户状态的实例
2018/01/29 PHP
php接口实现拖拽排序功能
2018/04/23 PHP
jQuery1.6 使用方法一
2011/11/23 Javascript
基于MVC3方式实现下拉列表联动(JQuery)
2013/09/02 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
2017/09/25 Javascript
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
vue2 中二级路由高亮问题及配置方法
2019/06/10 Javascript
vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作
2020/07/22 Javascript
在漏洞利用Python代码真的很爽
2007/08/26 Python
Python中的ceil()方法使用教程
2015/05/14 Python
浅谈Python 对象内存占用
2016/07/15 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
2018/04/27 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
详解Python中的format格式化函数的使用方法
2019/11/20 Python
Python while循环使用else语句代码实例
2020/02/07 Python
Python实现子类调用父类的初始化实例
2020/03/12 Python
iPython pylab模式启动方式
2020/04/24 Python
自我鉴定书范文
2013/10/02 职场文书
我们的节日清明节活动方案
2014/03/05 职场文书
2014年少先队工作总结
2014/12/03 职场文书
如何用python插入独创性声明
2021/03/31 Python
PHP设计模式(观察者模式)
2021/07/07 PHP
php去除deprecated的实例方法
2021/11/17 PHP
Python matplotlib绘制雷达图
2022/04/13 Python
搭建Yolov5服务器
2022/04/30 Servers