我的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" />
提前致谢
答案 0 :(得分:3)
你的考试:
/[A-Za-z -']$/
表示:
字母,空格,连字符或撇号,后跟字符串的结尾。
所以除了最后一个角色之外的任何角色都没关系。
如果要将表达式锚定到字符串的开头(以及使用^
将其锚定到结尾),则需要使用$
启动表达式。
您可能希望在群组后面添加*
或+
,以便您可以在其中添加多个字符。