Javascript 解析HTML表单输入中的数学公式,并将结果输出到同一字段

Javascript 解析HTML表单输入中的数学公式,并将结果输出到同一字段,javascript,html,forms,Javascript,Html,Forms,我想做的是有一个输入框,可以直接输入一个美元数字($10.99),也可以让用户输入一个计算——比如用户输入“2x9.99”或“2*9.99”或“9.99+9.99”等等。。。在他们输入后,值被输出回与结果相同的输入字段,如本例中的19.98 我做了一些搜索,但无法准确地找出如何准确地提出问题以找到好的答案。一个小时的搜寻,我再也没有靠近。我是一名PHP/MYSQL开发人员,我认为这是一份JS工作,我只是一个小黑客 提前谢谢 工作示例: 您的HTML: <input type="text"

我想做的是有一个输入框,可以直接输入一个美元数字($10.99),也可以让用户输入一个计算——比如用户输入“2x9.99”或“2*9.99”或“9.99+9.99”等等。。。在他们输入后,值被输出回与结果相同的输入字段,如本例中的19.98

我做了一些搜索,但无法准确地找出如何准确地提出问题以找到好的答案。一个小时的搜寻,我再也没有靠近。我是一名PHP/MYSQL开发人员,我认为这是一份JS工作,我只是一个小黑客

提前谢谢

工作示例:

您的HTML:

<input type="text" id="foo" value='enter math' onblur="matthy(this)">
显然,这需要一些认真的验证

使用PHP,您可以使用
eval()
计算字符串(来自输入字段)并输出结果。如果不想刷新页面,则需要一些Javascript AJAX

<?php

$input = $_POST['myinputfield'];
eval('$result = '.$input.';');

print($result);
?>

工作示例:

您的HTML:

<input type="text" id="foo" value='enter math' onblur="matthy(this)">
显然,这需要一些认真的验证

使用PHP,您可以使用
eval()
计算字符串(来自输入字段)并输出结果。如果不想刷新页面,则需要一些Javascript AJAX

<?php

$input = $_POST['myinputfield'];
eval('$result = '.$input.';');

print($result);
?>

首先创建一个输入和按钮,然后在脚本标记中创建函数calculate来计算输入,这很容易

 <input id="calc"  />
 <button onclick="calculate()">calculate</button>
 <div id="result"></div>
<script>
function calculate(){
    document.getElementById('result')
  .innerText=eval(document.getElementById('calc').value);
 }
</script>

计算
函数计算(){
document.getElementById('result')
.innerText=eval(document.getElementById('calc').value);
}

首先创建一个输入和按钮,然后在脚本标记中创建函数calculate来计算输入,这很容易

 <input id="calc"  />
 <button onclick="calculate()">calculate</button>
 <div id="result"></div>
<script>
function calculate(){
    document.getElementById('result')
  .innerText=eval(document.getElementById('calc').value);
 }
</script>

计算
函数计算(){
document.getElementById('result')
.innerText=eval(document.getElementById('calc').value);
}

取决于您是否要处理多个无效条目,那么网络中有很多js库。(即

如果没有,您可以用javascript快速完成

let value = $("input").value;

// replace x with asterisk and replace dollar with blank
eval(value.replace(/[xX]/g, "*").replace(/\$/g, ''));

取决于你是否想处理多个无效条目,那么网络中有很多js库

如果没有,您可以用javascript快速完成

let value = $("input").value;

// replace x with asterisk and replace dollar with blank
eval(value.replace(/[xX]/g, "*").replace(/\$/g, ''));

就我个人而言,我喜欢在服务器端(lol)做这些事情,最近我一直在使用基于PHP的lexer解析器类型的东西,所以我想我会与大家分享这一点。splat


然后,您只需为上面的令牌流创建一个解析器,使用一些关于操作顺序的规则或您拥有的规则,然后,宾果!加入一些Ajax和bango!

我个人喜欢在服务器端做这些事情(lol)最近我一直在使用基于PHP的lexer解析器类型的东西,所以我想我会与大家分享这一点。splat


然后,您只需为上面的令牌流创建一个解析器,使用一些关于操作顺序的规则或您所拥有的规则,然后,宾果!加入一些Ajax和bango!

使用现有的库,谷歌可以提供帮助,在一次搜索中找到数百个。Stackoverflow不是一个免费的代码编写服务或“如何”教程服务计算器javascript"考虑使用具有托管状态的受控组件,您可以选择支持数学表达式的ECMAScript语法,并仅使用该值,或者您可以创建自己的语法,解析该值并自行评估。您选择了什么?如果使用EVE,您可能首先要解析它,以检查它是否只包含合适的字符。s(例如0-9、+、-、/、*、等)使用现有库,谷歌可以帮助,在一次搜索中找到数百个。Stackoverflow不是免费的代码编写服务或“如何”教程服务将其作为“计算器javascript”搜索考虑使用具有托管状态的受控组件,您可以选择支持数学表达式的ECMAScript语法,并仅使用该值,或者您可以创建自己的语法,解析该值并自行评估。您选择了什么?如果使用EVE,您可能首先要解析它,以检查它是否只包含合适的字符。s(例如,0-9、+、-、/、*、等)应该对输入值进行一些验证,尤其是在服务器上对其求值时。@RobG绝对不是完整的代码。应该对输入值进行一些验证,尤其是在服务器上对其求值时。@RobG绝对不是完整的代码。