[英]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發布(如果您在網站中使用它)
我在當前使用jQuery的項目中做了很多這樣的事情:
$('#form')。submit(function(){
call_function_to_validate_and_submit(); 返回false;
});
每當我有一個javascript錯誤(語法或其他)時,即使驗證失敗,表單也會被提交(就像在沒有ajax的普通html表單中一樣)。 我的觀點是,你可能在某處出現語法錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.