Javascript 即使js函数返回false,onsubmit也会通过
我读过很多关于这个问题的帖子,出于某种原因,没有一个解决方案适合我。我有几个用于验证的js函数,它们在表单中指定给onSubmit标记的主函数中调用。以下是js代码:Javascript 即使js函数返回false,onsubmit也会通过,javascript,onsubmit,Javascript,Onsubmit,我读过很多关于这个问题的帖子,出于某种原因,没有一个解决方案适合我。我有几个用于验证的js函数,它们在表单中指定给onSubmit标记的主函数中调用。以下是js代码: <script type="text/javascript"> function validacijaForme() { var username = document.getElementById('usname'); var email = document.getElementById('email'); va
<script type="text/javascript">
function validacijaForme() {
var username = document.getElementById('usname');
var email = document.getElementById('email');
var pass1 = document.getElementById('pass1');
var pass2 = document.getElementById('pass2');
if(validacijaUsername(username) && validacijaEmail(email) && validacijaSifri(pass1,pass2))
{
alert('success');
return true;
}
return false;
}
</script>
<script type="text/javascript">
function validacijaSifri(fieldId1, fieldId2)
{
var two = document.getElementById(fieldId1).value;
var three = document.getElementById(fieldId2).value;
if(two == three) { return true; }
alert("Warning!! passcodes must match!!!");
return false;
}
</script>
<script type="text/javascript">
function validacijaUsername(usname)
{
var letters = /^[A-Za-z]+$/;
if(letters.test(usname.value))
{
return true;
}
else
{
alert('Username must have alphabet characters only');
document.getElementById('usrname').focus();
return false;
}
}
</script>
<script type="text/javascript">
function validacijaEmail(email)
{
var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
if(mailformat.test(email))
{
return true;
}
else
{
alert("You have entered an invalid email address!");
document.getElementById(email).focus();
return false;
}
}
函数validacijaForme(){
var username=document.getElementById('usname');
var email=document.getElementById('email');
var pass1=document.getElementById('pass1');
var pass2=document.getElementById('pass2');
if(validacijaUsername(用户名)和ValidacijameMail(电子邮件)以及validacijaSifri(密码1、密码2))
{
警惕(“成功”);
返回true;
}
返回false;
}
函数validacijaSifri(字段ID1,字段ID2)
{
var two=document.getElementById(fieldId1).value;
var三=document.getElementById(fieldId2).value;
如果(two==three){return true;}
警报(“警告!!密码必须匹配!!!”;
返回false;
}
函数validacijausterName(usname)
{
变量字母=/^[A-Za-z]+$/;
if(字母测试(usname.value))
{
返回true;
}
其他的
{
警报('用户名必须只有字母字符');
document.getElementById('usrname').focus();
返回false;
}
}
功能ValidacijameMail(电子邮件)
{
var mailformat=/^\w+([\.-]?\w+*@\w+([\.-]?\w+*(\.\w{2,3})+$/;
if(邮件格式测试(电子邮件))
{
返回true;
}
其他的
{
警报(“您输入的电子邮件地址无效!”);
document.getElementById(email.focus();
返回false;
}
}
这是html表单代码
<form class="form-signin" onSubmit="return validacijaForme();" name="registerForm" method = "POST" action="test.php" enctype="multipart/form-data">
<h2 class="form-signin-heading">Registracija</h2>
<input type="text" class="form-control" placeholder="Username" name="usrname" id="usname" autofocus>
<input type="text" class="form-control" placeholder="E-mail" name="email" id="email">
<input type="password" class="form-control" placeholder="Password" name="pass" id="pass1">
<input type="password" class="form-control" placeholder="Confirm password" id="pass2">
<button class="btn btn-lg btn-primary btn-block" name="dugme" type="submit">Register</button>
登记处
登记
问题是所有警报都在工作,这意味着这些函数确实验证了字段,并且应该返回false,但是onSubmit标记似乎不接受来自函数的值。
仅当我键入以下内容时,表单才会提交,也不会传递到test.php:
<form class="form-signin" onSubmit="return false" name="registerForm" method = "POST" action="test.php" enctype="multipart/form-data">
使用javascript提交表单
submit()
您的问题与您的用户名id/名称一致性有关。使用控制台(F12)调试这类事情
<input type="text" class="form-control" placeholder="Username" name="usRname" id="usname" autofocus>
致:
您的代码中有很多错误|
function validacijaForme() {
var username = document.getElementById('usname');
var email = document.getElementById('email');
var pass1 = document.getElementById('pass1');
var pass2 = document.getElementById('pass2');
if(validacijaUsername(username) && validacijaEmail(email) && validacijaSifri(pass1,pass2))
{
alert('success');
return true;
}
return false;
}
function validacijaSifri(fieldId1, fieldId2)
{
var two = fieldId1.value;
var three = fieldId2.value;
if(two == three) { return true; }
alert("Warning!! passcodes must match!!!");
return false;
}
function validacijaUsername(usname)
{
var letters = /^[A-Za-z]+$/;
if(letters.test(usname.value))
{
return true;
}
else
{
alert('Username must have alphabet characters only');
document.getElementById('usname').focus();
return false;
}
}
function validacijaEmail(email)
{
var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
if(mailformat.test(email.value))
{
return true;
}
else
{
alert("You have entered an invalid email address!");
document.getElementById('email').focus();
return false;
}
}
你能给我们链接吗?抱歉,不明白,链接是为了什么?你的函数中有很多错误你也把id放在表单标签中了?非常感谢你,我根本没有注意到,这是问题的一部分,另一部分是我调用document.getElementById('usname').focus();没有必要这么做,因为我已经将元素传递给了函数,它一定导致了一些异常,阻止了行return false的执行。是的,打开控制台后很容易找到它。现在就将此概念添加到您的调试工具带中!我不知道这个答案是如何被接受的,即使在所有功能中都有错误。注意,我一直在复制一些代码,这显然是个坏主意,我现在已经更正了,谢谢。。
<input type="text" class="form-control" placeholder="Username" name="usRname" id="usname" autofocus>
document.getElementById('usrname').focus();
document.getElementById('usname').focus();
function validacijaForme() {
var username = document.getElementById('usname');
var email = document.getElementById('email');
var pass1 = document.getElementById('pass1');
var pass2 = document.getElementById('pass2');
if(validacijaUsername(username) && validacijaEmail(email) && validacijaSifri(pass1,pass2))
{
alert('success');
return true;
}
return false;
}
function validacijaSifri(fieldId1, fieldId2)
{
var two = fieldId1.value;
var three = fieldId2.value;
if(two == three) { return true; }
alert("Warning!! passcodes must match!!!");
return false;
}
function validacijaUsername(usname)
{
var letters = /^[A-Za-z]+$/;
if(letters.test(usname.value))
{
return true;
}
else
{
alert('Username must have alphabet characters only');
document.getElementById('usname').focus();
return false;
}
}
function validacijaEmail(email)
{
var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
if(mailformat.test(email.value))
{
return true;
}
else
{
alert("You have entered an invalid email address!");
document.getElementById('email').focus();
return false;
}
}