formObject.submit () не работает - PullRequest
0 голосов
/ 08 декабря 2011

У меня есть простая форма, и я использую JavaScript для проверки введенных данных. Я не могу понять, почему document.getElementById ("submitform"). Submit () не работает. Ниже мой код. Спасибо за вашу помощь.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">

function checkSyntax(){

jsid=document.getElementById("sid").value;
jname=document.getElementById("name").value;
jemail=document.getElementById("email").value;
jgpa=document.getElementById("gpa").value;

var noError=true;
var Regsig=/^[2][0-9]{8}$/;
var Regn=/^[a-zA-Z]{2,25}$/;
var Rege=/^[a-zA-Z]+[_]?[a-zA-Z]*[@][a-zA-Z]+[.](net|com|edu.sa)$/;
var Regg=/^[1-4]+[.][0-9]+/;

if(!Regsig.test(jsid)){
    alert("The student ID must be all numbers and of length 9");
    noError=false;
}
if(!Regn.test(jname)){
    alert("Name must be alphabets of min length 3 and max 25");
            noError=false;

}
if(!Rege.test(jemail)){
    alert("Wrong email format");
            noError=false;

}
if(!Regg.test(jgpa)){
    alert("Wrong GPA format");
            noError=false;

}
if(noError){
  **document.getElementById("submitform").submit();**
}
}
function checkRetrieve(Sid2,Name2){
var Regsig=/(|[2][0-9]{8})/;
var Regn=/(|[a-zA-Z]{2,25})/;
var error=true;

if(!Regsig.test(sid.value)){
    alert("The student ID must be all numbers and of length 9");
    error=false;
}
if(!Regn.test(name.value)){
    alert("Name must be alphabets of min length 3 and max 25");
    error=false;
}
if(Sid2.value!="" && Name2.value!=""){
    alert("you can only use on of the two fields for your query");
    Sid2.value="";
    Name2.value="";
    error=false;

}



}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<h1>Web-Based Application for Student Academic Records</h1>
<p> Add a new student</p>
<body>

<form id="submitform" name="form1" method="post" action="stacademic.php">
Student ID:<input type="text" size="26" maxlength="9" name="SID"id="sid"/><br /><br />
Name:<input type="text" size="30" maxlength="50" name="NAME" id="name"/><br /><br />
Email:<input type="text" size="30" maxlength="50" name="EMAIL" id="email"/><br /><br />
Major: <select id="major" name="MAJOR">
<option>Computer Engineering<option/>
<option>Computer Science<option/>
<option>Electrical Engineering<option/>
<option>Mechanical Engineering<option/>
<option>Software Engineering<option/>
</select><br />
<br /> 
GPA:<input type="text" size="30" maxlength="5" name="GPA" id="gpa"/><br /><br />
<input type="submit" value="submit" onclick="checkSyntax()"  name="submit"/><br />
</form><br /> 


<p> Retrieve student GPA either Student ID or Student Name: </p>
<form id="retrieveform" onSubmit="return checkRetrieve(this.sid2,this.name2);"       method="post" action="stacademic.php">
Student ID:<input type="text" size="26" maxlength="9" name="SID2" id="sid2"/><br /><br />
Name:<input type="text" size="30" maxlength="50" name="NAME2" id="name2"/><br /><br />
<input type="submit" value="Retrieve Results"  name="submit2"/><br />

</form>

</body>
</html>

Ответы [ 2 ]

0 голосов
/ 09 декабря 2011

Алекс прав, ваша кнопка отправки отправляет форму.Вы должны использовать событие onSubmit в своей форме, и если проверка не пройдена, она возвращает false, что отменит отправку.Кроме того, не рекомендуется использовать onclick, потому что, если пользователь отправляет форму, нажав Enter, функция будет обойдена.

<form id="submitform" name="form1" method="post" action="stacademic.php" onSubmit="checkSyntax()">
0 голосов
/ 09 декабря 2011

Когда вы нажимаете кнопку, форма уже отправляется.

Вам нужно назначить checkSyntax для события onsubmit и затем вернуть true, если все было правильно, или вернуть false, если возникнут ошибки.Если функция в событии onsubmit возвращает false, форма не отправляется.

...