JavaScript工程输入库
javascript engineering input library
我正在为工程仿真编写一个基于 Web 的前端。后端仅接受非前缀 SI 单位(如米或瓦特(中的值。但是,最好允许用户以他们希望的任何单位输入值。 例如,如果需要输入距离,可以输入:
15 inches
3.1 meter
1.4 km
但以下值:
12 seconds
5 pounds
147 watts
将被拒绝。我首先尝试使用 js-quantities,但它没有以最直观的方式解析派生单位。它要求在每个乘法单元之间放置一个空格。例如,要输入以安培小时为单位的电量,100 Ah
无效,但100 A h
是可以接受的。此外,js-quantity不支持扭矩或温度单位(只有温差,例如,您无法将华氏度转换为摄氏度(
然后,我尝试使用谷歌计算器 API 进行单位转换,但它会产生难以解析小数字的结果:
将 5 nm 转换为米
请求:
http://www.google.com/ig/calculator?hl=en&q=5%20nm=?m
响应:
{lhs: "5 nanometers",rhs: "5.0 'x26#215; 10'x3csup'x3e-9'x3c/sup'x3e meters",error: "",icc: false}
,修改js数量会相当容易。
您只需编辑函数 parse(val( 函数。您尝试解析,失败后只需按照非常简单的规则集的要求插入空格。你从左到右遍历字符串并识别单位并拆分字符串。
但是,我可能会使用另一种解决方案,当用户输入它时,您已经将其拆分(通过相同的规则(。这样,当用户输入一个值时,它可以显示 Ah 的"使用 amp 小时数",用户可以看到一切都是他想要的方式。这样,您可以为用户提供从列表(或更高级的构建器(中进行选择,如果这不是他的意思。
谷歌计算器输出似乎不太难解析。
我会做这样的事情:
//Parse JSON output to JS variables
ret = JSON.parse(JSON.stringify({lhs: "5 nanometers",rhs: "5.0 'x26#215; 10'x3csup'x3e-9'x3c/sup'x3e meters",error: "",icc: false} ));
//ret = Object {lhs: "5 nanometers", rhs: "5.0 × 10<sup>-9</sup> meters", error: "", icc: false}
var lhs = new Object();
//Check if lhs has exp notation
if (ret.lhs.search("× ")!==-1) {
//If so, conversion is a bit harder...but not much
temp = ret.lhs.split("× ");
lhs.base = temp[0]
temp = temp[1].split("<sup>")[1].split("</sup>");
lhs.exp = temp[0];
lhs.unit = temp[1];
lhs.num = parseFloat(lhs.base)*Math.pow(10,parseFloat(lhs.exp));
} else {
//If no, piece of cake
temp = ret.lhs.split(" ");
lhs.num = parseFloat(temp[0]);
lhs.unit = temp[1];
}
//Exactly the same for rhs
var rhs = new Object();
if (ret.rhs.search("× ")!==-1) {
temp = ret.rhs.split("× ");
rhs.base = temp[0]
temp = temp[1].split("<sup>")[1].split("</sup>");
rhs.exp = temp[0];
rhs.unit = temp[1];
rhs.num = parseFloat(rhs.base)*Math.pow(10,parseFloat(rhs.exp));
} else {
temp = ret.lhs.split(" ");
lhs.num = parseFloat(temp[0]);
lhs.unit = temp[1];
}
console.log("Converted",lhs.num,lhs.unit,"to",rhs.num,rhs.unit);
输出:将5纳米转换为5e-9米
由于您现在将 lhs 和 rhs 作为数字 JavaScript 变量,并将它们的单位作为字符串,因此您可以根据需要格式化/处理它们。
你看过数学吗?
http://mathjs.org/
它还没有派生单位(我不相信(,但他们正在研究它。 除此之外,它可能是最接近您想要的东西。
如果您需要更多特定于工程行业的功能,则需要在某个时候扩展库。
- 删除输入中输入的符号
- 我确实有一个表单,如果用户输入了输入,它应该检查否定或空的输入框,并抛出一条警告消息
- 如何在输入总和输入时显示基于总和的结果
- 如何防止丢失PHP表单中输入的输入字段
- 如何在不通过模型验证的情况下屏蔽文本输入中输入的字符
- 如何使用 Angularjs 使流式处理更改输入中输入的文本
- 将文件插入到另一个输入的输入
- 如何显示正好 2 位数字的 html 数字输入的输入值
- 阻止在文本输入中输入数字
- 多个输入,用户只能在其中一个输入中输入
- 只能使用第一个输入框输入注释.他们不为其余的工作
- 是否可以通过javascript将@font face html实体输入到输入中
- 按下按键输入时输入表单和选择表单之间的冲突
- JavaScript 需要输入更改输入边框
- 在包含输入的输入文本框中输入字符后,移动到新页面
- 如何自动检测键盘输入和自动聚焦以输入并使用js或jquery将其输入到输入中
- 如何从刚刚输入的输入字段中在每页上打印发票编号
- 如何将在 html 表单中输入的输入传递给同一表单的操作
- 在浏览器中自动重复JavaScript功能,直到终止输入的输入
- Rails 4 / jQuery:需要在表单输入中输入值以自动填充其他输入