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