繁体   English   中英

JavaScript 错误的 if...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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM