首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数Javascript中的可变范围

函数Javascript中的可变范围
EN

Stack Overflow用户
提问于 2018-03-30 19:24:25
回答 1查看 36关注 0票数 0

我试图验证表单,但是每当我单击submit按钮时,它都会写到:

ReferenceError:未定义check_text

即使变量存在于本地作用域中。

代码语言:javascript
复制
<form class="input-text-box" method="post" action="">
    <input type="text" id="uname" name="uname" placeholder="First Name" autocomplete="off" required>                        
    <input type="text" id="ulastname" name="ulastname" placeholder="Last Name" autocomplete="off" required>
    <input type="text" id="uuname" name="uuname" placeholder="Username" autocomplete="off" required>
    <input type="text" id="contact" name="contact" placeholder="Contact" autocomplete="off" required>
    <input type="email" id="email" name="uemail" placeholder="Email Address" autocomplete="off" required>
    <input type="password" id="pass-1" name="upass1" placeholder="Password" autocomplete="off" required>
    <input type="password" id="pass-2" name="upass2" placeholder="Confirm Password" autocomplete="off"required>
    <input type="submit" value="Sign Up" id="submit-btn" onclick="validate()">
     <p class="term-cond">By joining, you agree to our <a href="">Terms of Service</a> </p>
     <p class="term-cond" style="margin:40px 0 0 65px;">Already a member? <a href="login.html">Sign In</a> </p>
</form>

以下是用于验证值的Javascript代码:

代码语言:javascript
复制
var msg="";
  var DOMstring = {
  firstName:'uname',
  lastName:'ulastname',
  userName:'uuname',
  contact:'contact',
  email:'email',
  pass1:'pass-1',
  pass2:'pass-2',
  submit:'submit-btn'
}
function validate(){
  var status = false;
  var firstName = document.getElementById(DOMstring.firstName).value;
  status = checkText(firstName,'First Name');
  var lastName = document.getElementById(DOMstring.lastName).value;
  status = checkText(lastName,'Last Name');
  var userName = document.getElementById(DOMstring.userName).value;
  status=checkText(userName,'Username');
  var contact = document.getElementById(DOMstring.contact).value;
  status = checkNumber(contact);
  var pass1 = document.getElementById(DOMstring.pass1).value;
  status = checkPass(pass1);
  var pass2 = document.getElementById(DOMstring.pass2).value;
  status = comparePass(pass1,pass2);

  if(status == true){
    alert("successfully created an account");
    return true;
  }else{
      alert("Please consider the following error messages<br>"+msg);
      return false;
   }
}

function checkText(DOMname,name){
  var ckeck_text =  /^[A-Za-z]$/;
  if(!check_text.test(DOMname)){
    msg += name + ' cannot contain numbers or special character.<br>';
    return false;
   }
 return true;
}

function checkNumber(DOMnumber){
  var check_number = /^[0-9]{10}$/;
  if(!check_number.test(DOMnumber)){
    msg += 'Number contains 10 digit only<br>';
    return false;
  }
  return true;
}

function checkPass(DOMpass1){
  var check_pass = /^(?=.*[\d])(?=.*[!@#$%^&*])[\w!@#$%^&*]{8,16}$/;
  if(!check_pass.test(DOMpass1)){
    msg += 'Password field should contain alphanumeric values and special character<br> and should be in range from 8 to 16<br>';
    return false;
  }
return true;
}

function comparePass(DOMpass1,DOMpass2){
  if(!DOMpass1 === DOMpass2){
    msg += 'Both password does not match<br>';
    return false;
  }
  return true;
}

如果我使用let而不是var,那么这个输出是合理的,但是使用下面的方法,为什么没有定义它,我不明白为什么在同名内没有变量。如果我遗漏了什么,请帮助我理解,因为我对Javascript完全陌生。

EN

回答 1

Stack Overflow用户

发布于 2018-03-30 19:26:29

这里有一个错误,var ckeck_text = /^[A-Za-z]$/;

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49580226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档