HTML / JavaScript内联验证无法完全发挥作用

时间:2015-05-26 08:46:10

标签: javascript html

我的HTML / JavaScript代码主要有效但不是100%。如果我在名称字段中放入无效字符,则会出现预期的错误。但是,如果我先输入一个无效字符然后输入有效字符,它就不会抛出任何错误。它基本上接受它。这是为什么?我如何解决它?我有这段代码:

<script>
function validateName(x){
  var re = /[A-Za-z -']$/;
  if(re.test(document.getElementById(x).value)){
  document.getElementById(x).style.background ='#ccffcc';
  document.getElementById(x + 'Error').style.display = "none";
  return true;
  }else{
  document.getElementById(x).style.background ='#e35152';
   document.getElementById(x + 'Error').style.display = "block";
   return false; 
  }
}
function validateForm(){
 var error = 0;
 if(!validateName('name')){
    document.getElementById('nameError').style.display = "block";
    error++;
  }
</scipt>
<form action="" onsubmit="return validateForm()">
<fieldset>
  <label for="name">Name</label>
  <input type="text" name="name" id="name" onblur="validateName(name)" />
  <span id="nameError" style="display: none;">You can only use alphabetic characters, hyphens and apostrophes</span>
</fieldset>
<input type="submit" id="submit" name="submit" value="Submit" />

提前致谢

1 个答案:

答案 0 :(得分:3)

你的考试:

/[A-Za-z -']$/

表示:

字母,空格,连字符或撇号,后跟字符串的结尾。

所以除了最后一个角色之外的任何角色都没关系。

如果要将表达式锚定到字符串的开头(以及使用^将其锚定到结尾),则需要使用$启动表达式。

您可能希望在群组后面添加*+,以便您可以在其中添加多个字符。