簡體   English   中英

在憑據不匹配時阻止登錄表單(AJAX)(返回false不起作用)

[英]prevent login Form from submission (AJAX) when credentials dont match (return false not working)

這是我的表格:

 <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”時提交表單。 基本上“返回假”是行不通的

另一種方法是取消默認事件 (在這種情況下是提交)

像這樣:

function validateLogin(e)
{
var x1=document.forms["loginform"];
if(//validations)
      {
       e.preventDefault();
       return false;
      }

請參閱: jQuery preventDefault();

嘗試使用jQuery發布(如果您在網站中使用它)

我在當前使用jQuery的項目中做了很多這樣的事情:

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

call_function_to_validate_and_submit(); 返回false;

});

每當我有一個javascript錯誤(語法或其他)時,即使驗證失敗,表單也會被提交(就像在沒有ajax的普通html表單中一樣)。 我的觀點是,你可能在某處出現語法錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM