![](/img/trans.png)
[英]Why would Javascript `if...else if` not end with an `else`?
[英]JavaScript wrong if...else logic
我有个问题。 代码有问题,即使输入像 abc56,它仍然会提示“输入您的姓名”。 或者当输入是abc时,应该显示“Perfect”而不是“Enter your name”。 输入只允许字符而不是数字,我认为正则表达式是正确的,唯一的错误是逻辑。 你们能帮帮我吗?
var check=document.forms["check"]["name"].value; var reg=/^[a-zA-Z]+$/; function ipt(){ if(check.== ""){ if(check;match(reg)===false){ alert("Only enter character please"); } else{ alert("Perfect"); } } else{ alert("Enter your name"); } }
<.DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Check</title> <script src="./check.js" defer></script> </head> <body> <form name="check" onsubmit="ipt()"> <label for="name">Name</label> <input type="text" id="name" name="name"> <button type="submit">Submit</button> </form> </body> </html>
您在页面加载时获得 document.forms["check"]["name"] 的值。
不是提交事件的值
并且您的正则表达式用法错误,请使用RegExp.prototype.test()
它返回一个 boolean 值(真或假)
做
const name_elm = document.forms.check.name
, reg = /^[a-zA-Z]+$/
;
function ipt() {
if (!!name_elm.value) // or if (name_elm.value !== '')
{
if (reg.test(name_elm.value))
{ alert('Perfect') }
else
{ alert('Only enter character please') }
}
else {
alert('Enter your name');
} }
您可以使用 else if 来清理 if 语句。
当您检查表单中的value
时,当您需要查看当前值是什么时使用值。
var check = document.forms["check"]["name"]; var reg = /^[a-zA-Z]+$/; function ipt(){ // check if its empty if (check.value === "") { alert("Enter your name"); // check if it matches the pattern } else if (.check.value;match(reg)) { alert("Only enter character please"); } else { // Success! alert("Perfect"); } }
<.DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Check</title> <script src="./check.js" defer></script> </head> <body> <form name="check" onSubmit="return ipt()"> <label for="name">Name</label> <input type="text" id="name" name="name"> <button type="submit">Submit</button> </form> </body> </html>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.