服务器/本地的javascript表单验证

时间:2009-04-16 22:58:18

标签: javascript html

我正在使用javascript表格验证参加我正在参加的比赛的参赛表格。它是内联CSS,因此如果不满足某些条件,它会以红色显示“请输入您的电子邮件地址”或“看起来不像有效电子邮件地址”等消息。

位于文件顶部的脚本如下所示:

<script>

  function checkForm() {
name = document.getElementById("name").value;
email = document.getElementById("email").value;
terms = document.getElementById("terms").value;


  if (name == "") {
  hideAllErrors();
document.getElementById("nameError").style.display = "inline";
document.getElementById("name").select();
document.getElementById("name").focus();
  return false;
  } else if (email == "") {
hideAllErrors();
document.getElementById("emailError").style.display = "inline";
document.getElementById("email").select();
document.getElementById("email").focus();
  return false;
  } 

else if (!check_email(document.getElementById("email").value)) {
hideAllErrors();
document.getElementById("emailError2").style.display = "inline";
document.getElementById("email").select();
document.getElementById("email").focus();
  return false;
  } 

else if (!document.form1.terms.checked){
hideAllErrors();
document.getElementById("termsError").style.display = "inline";
document.getElementById("terms").select();
document.getElementById("terms").focus();
  return false;
  } 

  return true;
  }

function check_email(e) {
ok = "1234567890qwertyuiop[]asdfghjklzxcvbnm.@-_QWERTYUIOPASDFGHJKLZXCVBNM";

for(i=0; i < e.length ;i++){
if(ok.indexOf(e.charAt(i))<0){ 
return (false);
}   
} 

if (document.images) {
re = /(@.*@)|(\.\.)|(^\.)|(^@)|(@$)|(\.$)|(@\.)/;
re_two = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
if (!e.match(re) && e.match(re_two)) {
return (-1);        
} 

}

}
 function hideAllErrors() {
document.getElementById("nameError").style.display = "none"
document.getElementById("emailError").style.display = "none"
document.getElementById("commentError").style.display = "none"
document.getElementById("termsError").style.display = "none"

  }

电子邮件和名称验证工作正常,表单中不起作用的部分如下所示:

<form onSubmit="return checkForm();" method="get" action="sweepstakes-results.php" 
<input type=checkbox name=terms id=terms ><br></p>
<div class=error id=termsError>Required: Please check the checkbox<br></div>
<p><input type=submit value=Send style="margin-left: 50px"> </p>
</form>

“条款和条件”复选框仅在文件位于我的本地计算机上时才有效,当我上传它时,它只是让我提交表单,即使它没有被选中。是不是在浏览器上运行javascript?文件的位置怎么会有所不同?

1 个答案:

答案 0 :(得分:0)

您的表单没有名称,因此以下代码无效:

else if (!document.form1.terms.checked){

由于您已经在检索结帐的DOM对象,请执行以下操作。改变这一行:

terms = document.getElementById("terms").value;

为:

terms = document.getElementById("terms");

如果代码为:

,则替换else
else if (!terms.checked){