这是我的表格:
<form name="loginform" method="POST" action="login" onsubmit="return validateLogin()">
<div> User Name :<input class="input" name="username" type="text" /> </div>
<div> Password :<input class="input" name="password" type="password" /> </div>
<div> id="yaha" style="color:red;font:bold 16px garamond"</div>
<input style="font-weight:bold;" type="submit" value="Login" />
javascript代码如下所示:
function validateLogin()
{
var x1=document.forms["loginform"];
if(//validations)
{
return false;
}
else
{ goajax(x1.username.value,x1.password.value);}
}//validate login ends...
var requ = null;
function goajax( u, p)
{
requ=new XMLHttpRequest();
//code for posting ajax data
requ.onreadystatechange=display;
}
function display()
{
if(requ.readyState == 4)
{
if(requ.status == 200)
{
var message = requ.responseText;
alert("message==="+message);
var x;
if(message.trim() == "ok")
{
var x1=document.forms["loginform"];
return true;
}
else if(message.trim() == "no")
{
document.getElementById('yaha').innerHTML="Invalid Username or Password!!!";
x1.password.value="";
return false;
}
else if(message.trim() == "nv")
{
document.getElementById('yaha').innerHTML="Account not Activated";
return false;
}
}
}
}
我的问题是:我正在根据需要从服务器获取响应,但是如果出现不需要的响应,表单即使在“return false”之后也会提交。 (见功能显示())
请向下滚动到功能显示()我不希望在消息为“no”或“nv”时提交表单。基本上“返回假”不起作用
答案 0 :(得分:2)
另一种方法是cancel the default event(在这种情况下是提交)
像这样:
function validateLogin(e)
{
var x1=document.forms["loginform"];
if(//validations)
{
e.preventDefault();
return false;
}
答案 1 :(得分:0)
尝试使用jQuery发布(如果您在网站中使用它)
答案 2 :(得分:0)
我在当前使用jQuery的项目中做了很多这样的事情:
$('#form')。submit(function(){
call_function_to_validate_and_submit(); 返回false;
});
每当我有javascript错误(语法或其他)时,即使验证失败,表单也会被提交(就像在没有ajax的普通html表单中一样)。我的观点是,你可能会在某处出现语法错误。