Javascript 在HTML表单上显示错误消息,然后在用户更正错误后删除此消息
我正在尝试使用HTML5和基本JavaScript构建一个简单的应用程序。我有它的工作,但我有困难做一件简单的事情(至少在我使用的其他语言中是简单的)。这是我目前的代码:Javascript 在HTML表单上显示错误消息,然后在用户更正错误后删除此消息,javascript,html,forms,validation,Javascript,Html,Forms,Validation,我正在尝试使用HTML5和基本JavaScript构建一个简单的应用程序。我有它的工作,但我有困难做一件简单的事情(至少在我使用的其他语言中是简单的)。这是我目前的代码: <!DOCTYPE html> <html> <head> <title>JS Test</title> <meta charset="utf-8" /> </head&
<!DOCTYPE html>
<html>
<head>
<title>JS Test</title>
<meta charset="utf-8" />
</head>
<script>
function isTrackValid(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 200 BPM";
}
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 = isTrackValid(track_a, track_b);
if(message !== "") {
$('#error_message').text(message);
} else {
var result = calculate(track_a, track_b);
return result.toFixed(2);
}
}
</script>
<body>
<header>
<h1>JS Test</h1>
</header>
<form onsubmit="return false" oninput="o.value=eval(main());">
Track A: <input name="input_a" id="input_a" type="number" min="0.0" max="200.0" placeholder="Track A"><br/>
Track B: <input name="input_b" id="input_b" type="number" min="0.0" max="200.0" placeholder="Track B"><br/>
<br />
<div id="error_message"></div>
Output: <output name="o" step="0.01" for="a b"></output>
</form>
</body>
</html>
JS测试
函数isTrackValid(磁道a、磁道b){
如果(轨迹a>200.0 | |轨迹a<0.0){
return“编号必须介于0到200 BPM之间”;
}
如果(轨迹b>200.0 | |轨迹b<0.0){
return“编号必须介于0到200 BPM之间”;
}
返回“”;
}
函数计算(轨道a、轨道b){
如果(轨迹a>轨迹b){
返回((a轨道-b轨道)/a轨道)*100;
}否则如果(轨道a<轨道b){
返回((a轨道-b轨道)/b轨道)*100;
}否则{
返回0.0;
}
}
函数main(){
轨道a=输入值a.valueAsNumber;
轨道\ b=输入\ b.valueAsNumber;
var消息=isTrackValid(磁道a、磁道b);
如果(消息!==“”){
$(“#错误消息”)。文本(消息);
}否则{
var结果=计算(轨道a、轨道b);
返回结果。toFixed(2);
}
}
JS测试
曲目A:
曲目B:
输出:
我想要的是,如果用户输入一个介于0和200之间的数字,我的
就会显示出来。此输出将根据上面的javascript计算出正确答案。如果用户输入一个负数,或者一个大于200的数字,那么我希望将错误输入到
字段中
对于当前代码(以及因StackOverflow上的应答而产生的
),当发生错误时,它将超出输出
。然而,当用户输入一个有效的数字时,这个错误会一直存在,并且永远不会消失
我想知道我是否能消除这个错误?或者如果它无效,我可以做些什么让它转到Output
如果值有效,则不会删除错误
消息。另外请注意,您可以使用[type=number]
元素上的JavaScript事件绑定来绑定事件,而不是使用eval
试试这个:
函数isTrackValid(磁道a、磁道b){
如果(轨迹a>200.0 | |轨迹a<0.0){
return“编号必须介于0到200 BPM之间”;
}
如果(轨迹b>200.0 | |轨迹b<0.0){
return“编号必须介于0到200 BPM之间”;
}
返回“”;
}
函数计算(轨道a、轨道b){
如果(轨迹a>轨迹b){
返回((a轨道-b轨道)/a轨道)*100;
}否则如果(轨道a<轨道b){
返回((a轨道-b轨道)/b轨道)*100;
}否则{
返回0.0;
}
}
函数main(){
轨道a=输入值a.valueAsNumber;
轨道\ b=输入\ b.valueAsNumber;
var消息=isTrackValid(磁道a、磁道b);
如果(消息!==“”){
$(“#错误消息”)。文本(消息);
}否则{
$(“#错误消息”)。文本(消息);
var结果=计算(轨道a、轨道b);
返回结果。toFixed(2);
}
}
var elems=document.querySelectorAll('[type=“number”]');
[]forEach.call(元素、函数(元素){
元素addEventListener(“输入”,主);
});代码>
轨道A:
轨道B:
输出:
@GopsAB通过JSFiddle执行此操作似乎没有显示任何错误:您是否包含了jquery for$('#error_message')。text(message);quo@Alex您在使用JQuery
?如果是这样的话,你还加了吗?@Niklesh:o我甚至不知道那是JQuery。我最初问了一个关于StackOverflow的问题,关于只用javascript处理错误。我知道当时(现在可能没有)HTML命令。所以我要说那应该是一个DIV(即:)。然后,您可以显示/隐藏DIV,也可以在不想看到它时将其移动到-5000、-5000之类的位置。此外,还需要将z索引设置为零(0)以外的其他值,而零(0)是其他所有内容所在的层。(即:z-index:1将覆盖网页的其余部分。)