Javascript - 执行用户计算

时间:2013-04-29 06:49:19

标签: javascript math calc

我想让我的用户在字段中编写一些简单的计算,然后计算他们在onBlur()事件中写的内容。 假设他们写5*(3+5)-10然后当他们改变焦点时我想计算结果并在同一文本字段中回写。我知道如何处理所有事件,我只想知道你是否知道可以计算这个简单的符号计算的脚本的存在(我只需要* / - +)。我用Google搜索,但我没有找到任何东西...... 谢谢!

4 个答案:

答案 0 :(得分:3)

您可以使用eval,但您应首先清理输入以仅允许允许的字符。

if (/[^0-9.*/+()-]/.test(expr)) {
    alert("illegal expression");
} else {
    var res = eval(expr);
}

测试将确保用户无法尝试破坏eval以使其运行任意用户提供的JavaScript代码。

答案 1 :(得分:1)

eval是否符合您的需求?

> eval('5*(3+5)-10')
30

答案 2 :(得分:0)

安全绝对不安全,但您可以使用eval()功能:http://jsfiddle.net/UQTY2/112/

答案 3 :(得分:0)

作为一个起点,这可能会有所帮助:

var calcApp={};

calcApp.isValidExpression=function(expression){
    return expression.match(/[^0-9+-\\*\\/\(\)]/)==null;
};

calcApp.calculate=function(expression){
    val=0;
    if(calcApp.isValidExpression(expression)){
           val=eval(expression);    
    }
    return val;
};

$(".calculator").blur(function(e){
   $(".result").html(calcApp.calculate($(e.target).val()));  
});

没有错误检查错误的表达式 - 包括“1 + *”。