これは私のフォームです:
<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;」の後でもフォームが送信されます。(関数 display() を参照)
function display() までスクロールしてください。メッセージが「no」または「nv」の場合、フォームを送信したくありません。基本的に「falseを返す」は機能しません