0

这是我的表格:

 <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;
        }
    }     
}

}

我的问题是:我正在根据需要从服务器获取响应,但如果出现不希望的响应,即使在“返回 false”之后,表单也会被提交;(见函数 display())

请向下滚动到函数 display() 我不希望在消息为“no”或“nv”时提交表单。基本上“return false”不起作用

4

3 回答 3

2

另一种方法是取消默认事件(在本例中为提交)

像这样:

function validateLogin(e)
{
var x1=document.forms["loginform"];
if(//validations)
      {
       e.preventDefault();
       return false;
      }
于 2012-12-18T10:32:27.903 回答
0

我在当前的项目中使用 jQuery 做了很多这样的事情:

$('#form').submit(function () {

call_function_to_validate_and_submit(); 返回假;

});

每当我遇到 javascript 错误(语法或其他)时,即使验证失败,表单也会被提交(就像在没有 ajax 的普通 html 表单中一样)。我的观点是,您可能在那里的某个地方有语法错误。

于 2012-12-18T10:42:15.010 回答
0

参见:jQuery preventDefault();

尝试使用 jQuery 发布(如果您在网站中使用它)

于 2012-12-18T10:32:58.623 回答