Javascript 如果输入字段数据不正确,则阻止操作。(js)

Javascript 如果输入字段数据不正确,则阻止操作。(js),javascript,function,while-loop,Javascript,Function,While Loop,我被一些问题困住了。有三个两个输入框:生日、金额和利率%。如果您点击按钮,页面将显示余额概览,直到金额翻倍。 所以问题是:当我输入错误的日期时,我会收到通知。不过,利息仍在事后计算。我想防止代码在输入错误的情况下执行 document.getElementByIdbutton.onclick=循环; var inputA=document.getElementByIdinputA; var inputB=document.getElementByIdinputB; var inputC=doc

我被一些问题困住了。有三个两个输入框:生日、金额和利率%。如果您点击按钮,页面将显示余额概览,直到金额翻倍。 所以问题是:当我输入错误的日期时,我会收到通知。不过,利息仍在事后计算。我想防止代码在输入错误的情况下执行

document.getElementByIdbutton.onclick=循环; var inputA=document.getElementByIdinputA; var inputB=document.getElementByIdinputB; var inputC=document.getElementByIdinputC; var result=document.getElementByIdresult 函数所有函数{ 正确的生日 总和 速度 环 } 函数环{ var s=输入值; var r=输入UTC.value; var doubleS=s*2; 而s<加倍{ s=r/100+1*s; result.innerHTML+=s+; } 如果inputA.value== {警报'请为输入a'输入一个值'; 回来 } } 函数校正数据{ var vorm=/^\d{2}-\d{2}-\d{4}$/; 返回vorm.testdatum; } 功能校正生日{ var d=输入值; 如果更正日期==错误{ 警告日期的格式不正确; 回来 } 如果有效{ result.innerHTML=; } } 功能速率{ var r=租金百分比.value; 如果correctRater==true{ 警告输入金额的格式不正确; 回来 }否则{ result.innerHTML=; } } 功能校正租金{ var-vorm=/[a-zA-Z]/; 返回vorm.testrente; } 函数和{ var s=贝德拉德值; 如果correctSums==真{ 警告输入金额的格式不正确; 回来 }否则{ result.innerHTML=; } } 函数修正SUMSOM{ var-vorm=/[a-zA-Z]/; 返回vorm.testsom; } 克里克 De ingevoerde结果:

在allFunctions函数中:

function allFunctions() {
    correctBirthday()
    sum();
    rate();
    loop();
}
如果返回未定义,则所有函数都不知道它应该停止。您有两个主要选择:

如果生日不正确,则抛出错误,稍后再捕获: 函数所有函数{ 试一试{ 正确的生日 总和 速度 环 }捕捉错误{ 警报错误消息; } } 功能校正生日{ var d=输入值; 如果更正日期==错误{ 抛出新错误日期格式不正确; } 如果有效{ result.innerHTML=; } } 让CorrectBirth根据是否成功返回true或false,并让所有函数适当响应: 函数所有函数{ 让生日正确=正确的生日; 如果!生日是正确的{ 回来 总和 速度 环 } 功能校正生日{ var d=输入值; 如果更正日期==错误{ 警告日期的格式不正确; 返回false; } 如果有效{ result.innerHTML=; } 返回true; } 编辑:如果您希望validDated为false时也有此行为,请尝试

功能校正生日{ var d=输入值; 如果更正日期==错误{ 抛出新错误日期格式不正确; } 如果!有效{ 抛出新错误日期无效; } result.innerHTML=; } //或者。。。 功能校正生日{ var d=输入值; 如果更正日期==错误{ 警告日期的格式不正确; 返回false; } 如果!有效{ 警告日期无效; 返回false; } result.innerHTML=; 返回true; }
我还没有深入研究这个问题,但您已经在顶部重新声明了变量inputB:var inputB=document.getElementByIdinputA;var inputB=document.getElementByIdinputB;抱歉……这是一个打字错误。但问题仍然存在。谢谢您,Jack!只有在生日字段为空时才有效……我的意思是我没有得到计算结果。但是当我输入一个不正确的日期,之后利息仍在计算中…我想当validDated返回false时,您也会希望作出响应;如果返回false,您可能会抛出错误或返回false。我不建议这样做,因为我希望回答您的问题时尽可能少做更改:请参阅编辑以遵循。。。