将字符串返回到类型为“0”的输出字段;数字“;针对用户错误javascript
Returning a string to an output field of type "number" for user error javascript
我正在做一个项目来掌握javascript和html5的窍门。
现在我有两个文本字段,input_a
和input_b
。我有一个输出字段,它将使用这两个数字(可以是整数或浮点),并对它们进行计算,然后将其返回到输出字段。为了简单起见(忽略CSS文件),以下是设置方法:
<!DOCTYPE html>
<html>
<head>
<title>JS Test</title>
<meta charset="utf-8" />
</head>
<script>
function select_formula() {
track_a = input_a.valueAsNumber;
track_b = input_b.valueAsNumber;
if(track_a > 200.0 || track_a < 0.0) {
console.log("Number must be between 0 BPM and 200 BPM");
return false;
}
if(track_b > 200.0 || track_b < 0.0) {
console.log("Number must be between 0 BPM and 200BPM");
return false;
}
if(track_a > track_b) {
return "((track_a - track_b) / track_a) * 100";
} else if(track_a < track_b) {
return "((track_a - track_b) / track_b) * 100";
} else {
return "0.0";
}
}
</script>
<body>
<header>
<h1>JS Test</h1>
</header>
<form onsubmit="return false" oninput="o.value=eval(select_formula());">
Track A: <input name="input_a" id="input_a" type="number" step="0.01" min="0.0" max="200.0" placeholder="Track A"><br/>
Track B: <input name="input_b" id="input_b" type="number" step="0.01" min="0.0" max="200.0" placeholder="Track B"><br/>
<br />
Output: <output name="o" step="0.01" value="0.00" for="a b"></output>
</form>
</body>
</html>
值得庆幸的是,现在没有人可以在文本字段中输入字符串,因为我的输入类型为number
。但是,如果有人输入了超出此范围的无效数字,我希望输出显示错误消息"Number must be between 0 BPM and 200 BPM"
。
到目前为止,我可以创建一个alert()
,但我真的不需要惹恼用户,也不需要犯那么多错误。那么,是否有任何方法可以将我的错误发送到输出?我是JavaScript的新手,所以现在我只想学习很多不同的教程。我们非常感谢在正确方向上提供的任何帮助。
最简单的方法是,您想要一个div,用于将错误附加到其中。类似于:
<script>
function isValid(track_a, track_b) {
if(track_a > 200.0 || track_a < 0.0) {
return "Number must be between 0 BPM and 200 BPM";
}
if(track_b > 200.0 || track_b < 0.0) {
return "Number must be between 0 BPM and 200BPM";
}
return "";
}
function calculate(track_a, track_b) {
if(track_a > track_b) {
return "((track_a - track_b) / track_a) * 100";
} else if(track_a < track_b) {
return "((track_a - track_b) / track_b) * 100";
} else {
return "0.0";
}
}
function main() {
track_a = input_a.valueAsNumber;
track_b = input_b.valueAsNumber;
var message = isValid(track_a, track_b);
if (message !== "")
$('#result').text(message);
else {
var result = calculate(track_a, track_b);
$('#result').text(result);
}
}
</script>
<body>
<form onsubmit="return false" oninput="o.value=eval(main());">
Track A: <input name="input_a" id="input_a" type="number" step="0.01" min="0.0" max="200.0" placeholder="Track A"><br/>
Track B: <input name="input_b" id="input_b" type="number" step="0.01" min="0.0" max="200.0" placeholder="Track B"><br/>
<br />
<div id="result"></div>
Output: <output name="o" step="0.01" value="0.00" for="a b"></output>
</form>
但我认为你需要更广泛的背景。
请查看AngularJS教程,这是目前在客户端使用的流行JavaScript框架。
考虑使用type="range"
输入,这将限制用户可以输入的数字范围。此外,范围输入将提高移动用户的可用性。否则,如果您希望用户能够通过键入进行输入,您可以用js覆盖输入数字,并且不需要输出错误消息。
<script>
message = "";
function select_formula() {
track_a = input_a.valueAsNumber;
track_b = input_b.valueAsNumber;
if (track_a > 200) {
input_a.value = 200;
} else if (track_a < 0) {
input_a.value = 0;
} else if (track_b > 200) {
input_b.value = 200;
} else if (track_b < 0) {
input_b.value = 0;
}
if(track_a > track_b) {
return "((track_a - track_b) / track_a) * 100";
} else if(track_a < track_b) {
return "((track_a - track_b) / track_b) * 100";
} else {
return "0.0";
}
}
</script>
若您想用错误消息通知用户,只需添加错误消息专用标签即可。默认情况下不可见的<span>
或<div>
,并在错误事件中使用js将其设置为可见。
相关文章:
- 我如何在数字插入中使用逗号,这样它就不会'不要破坏我的输入字段
- 输入字段,只接受0到12之间的数字
- 如何限制一个字段只接受4个数字字符作为输入,并获得'It’这是潜水警报
- angularjs在数字(html5)字段中将0转换为1
- 简单的Javascript方式,在输入字段的每5位数字后添加一个空格
- AngularJs:在数字输入字段中设置验证的条件最小值和最大值
- 在粘贴事件Javascript的输入字段中删除所有非数字字符
- 如何使文本、数字和日期html输入字段以一致的方式支持Ctrl+Z(撤消)
- 如何从动态输入字段添加数字
- 要检查的正则表达式数值字段没有 /或具有所有相同的数字
- 如何在javascript中获取隐藏字段的数字和
- OData:对url请求中的数字(ID)字段进行通配符(startswith)筛选
- 根据输入字段中键入的数字更改td单元格的颜色
- 如何使用鼠标或触摸更改数字输入字段
- 将字符串返回到类型为“0”的输出字段;数字“;针对用户错误javascript
- 使用输入数字值作为另一个字段的输入数字最大值
- 我如何在文本输入字段中输入数字,而无需在 JavaScript 或 jQuery 中输入模式
- Angular2:仅包含数字的字段的自定义验证
- 从 JSON 解析数组,其中每个字段键都是一个数字
- 使用java脚本在acrobatpdf表单中更改字段数字样式