在 Web 应用程序中进行 "real-time" 单位转换的任何方法

Any way to do "real-time" unit conversion in web application

我想建立一个允许用户将 Hz 转换为 bpm 的网站(但请注意,我的问题涉及各种单位转换)。我正在使用 PHP 并在 Apache 上托管我的网站。

所以,我想知道是否可以 "bind" 将输入字段 HTML 元素,就像我们在 WPF 开发中所做的那样,您可以将输入区域绑定到 WPF 元素,并应用某种数据转换,因此如果用户键入 12 bpm,绑定元素将自动并立即显示 0.2 Hz。如果用户随后添加一个“0”,那么 120 bpm 将自动立即转换为 2 Hz.

我试图描述的效果也可以在这个论坛上看到:当我输入问题时,我可以看到 "real-time" 我的文本的最终版本。

这是如何实现的? PHP 有什么办法吗?我知道 AJAX 但我真的更愿意避免使用 Javascript 来保存我的数学函数。如果我错了请纠正我,但我认为这可以用 Node.js 来完成?我应该考虑迁移到 Node 吗?

仅使用 DOM 和 JavaScript,您可以在文本字段上使用 input event,以便在其值因用户操作而改变时立即收到回调:

document.querySelector("selector-for-the-field").addEventListener("input", function() {
    // Code here to do and display conversion
}, false);

示例(centigrade/Celsuis 到华氏度):

var f = document.getElementById("f");
document.querySelector("#c").addEventListener("input", function() {
  var value = +this.value;
  if (!isNaN(value)) {
    value = (value * 9) / 5 + 32;
    f.innerHTML = value;
  }
}, false);
<div>
  <label>
  Enter centigrade:
  <input type="text" id="c">
</label>
</div>
<div>
  Fahrenheit: <span id="f"></span>
</div>

退一步说,是的,有几十个库和框架在浏览器中提供MVC/MVVM/MVM/whatever-the-acronym-is-this-week。当前流行的一个简短列表:React,Angular,Vue,Knockout,...请注意,这些不是魔术,它们只是用 JavaScript(或类似 TypeScript 或 Dart 或使用 DOM 封面编译为 JavaScript) 的 CoffeeScript。

我会给你一个实时"inches to cm"转换的例子。

请注意,要使此示例正常工作,您需要包含 jQuery。

HTML:

<div>
    <label>Inches</label>
    <input type="text" id="user_input" />
</div>
<div>
    <label>Centimeters</label>
    <input type="text" id="result" readonly />
</div>

JAVASCRIPT:

$(document).ready(function(){
    $('#user_input').on('propertychange input keyup', function(){
        var thisVal = $(this).val();
        $('#result').val(thisVal * 2.54);
    });
});

Fiddle: https://jsfiddle.net/captain_theo/t10z01cm/

您可以针对任何类型的转化扩展它。

检查我更新的 fiddle,其中还包括 Hz 到 bpm:

https://jsfiddle.net/captain_theo/t10z01cm/1/

干杯,西奥