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

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

<!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>

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

时间: 2024-11-03 03:47:11

让文本框支持加减运算的实现方法的相关文章

字符串大数加减运算问题

这里自己利用STL模板中的容器和链表实现字符串大数加减运算. 1 #include<iostream> 2 #include<vector> 3 #include<list> 4 using namespace std; 5 6 list<char> Input_Number(list<char> ilist)//输入链表字符串,以‘#’作为结束符 7 { 8 cout<<"please Input string ,end

C_BigDecimal_加减运算

首先举个例子说说思路: 输入str1:1.341   str2:11.2  在C语言中存储字符串的直接是字符型数组,strlen(str)代表字符串的长度(那个小数点也要算的),则str1,str2的长度为5和4.而浮点数加减运算时遵循从右往左计算,所以首先要使得字符串格式化.找到并返回存储字符串中小数点的下标,str1,str2小数点位置下标为1和2,然后用字符串长度减去即可求出小数点后的位数差,通过循环将短的加0补齐,为1.341,11.200,最后按最长长度循环将字符从右依次赋值给自定的c

linux date 加减运算

在linux shell编程中,经常用到日期的加减运算 查看时间: [[email protected] ~]# date Fri Sep  2 13:12:56 CST 2016 修改时间: [[email protected] ~]# date -s "1980-01-01 00:00:00" Tue Jan  1 00:00:00 CST 1980 其实date命令本身提供了日期的加减运算 非常方便.例如:得到昨天的时间date +%Y%m%d --date="-1 d

Oracle 如何对时间进行简单加减运算

在我们用dbms_job包进行定时Job的时候,需要设置时间间隔,所以需要知道时间的基本加减方法. SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; 会话已更改. SQL> select sysdate, sysdate+1/24, sysdate +1/1440, sysdate + 1/86400 from dual; --分别是加一小时,一分钟,一秒钟 SYSDATE SYSDATE+1/24 SYSDATE+

浮点加减运算中左规右规问题

当尾数用二进制表示时,浮点规格化的定义是尾数M应满足:  1/2   ≤  |M|<1 显然对于正数而言,有M = 00.1φφ-φ:对于负数,其补码形式为11.0φφ-φ(即-0.0*******,左归).这样,当进行补码浮点加减运算时,只要对运算结果的符号位和小数点后的第一位进行比较:如果它们不等,即为00.1φφ-φ或11.1φφ-φ,就是规格化的数:如果它们相等,即为00.0φφ-φ或11.0φφ-φ,就不是规格化的数,在这种情况下需要尾数左移以实现规格化的过程,叫做向左规格化.规则是:

Leetcode 592.分数加减运算

分数加减运算 给定一个表示分数加减运算表达式的字符串,你需要返回一个字符串形式的计算结果. 这个结果应该是不可约分的分数,即最简分数. 如果最终结果是一个整数,例如 2,你需要将它转换成分数形式,其分母为 1.所以在上述例子中, 2 应该被转换为 2/1. 示例 1: 输入:"-1/2+1/2" 输出: "0/1"  示例 2: 输入:"-1/2+1/2+1/3" 输出: "1/3" 示例 3: 输入:"1/3-1/

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

Given a string representing an expression of fraction addition and subtraction, you need to return the calculation result in string format. The final result should be irreducible fraction. If your final result is an integer, say 2, you need to change

jquery实现文本框数量加减功能的例子分享

<!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> <meta http-equiv="Content-

Oracle日期的加减运算

无论是DATE还是timestamp都可以进行加减操作.可以对当前日期加年.月.日.时.分.秒,操作不同的时间类型,有三种方法: 1 使用内置函数numtodsinterval增加小时,分钟和秒2 加一个简单的数来增加天3 使用内置函数add_months来增加年和月 例:对当前日期增加一个小时:SQL> select sysdate, sysdate+numtodsinterval(1,'hour') from dual ; SYSDATE             SYSDATE+NUMTOD