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

}

私の質問は次のとおりです。サーバーから必要に応じて応答を取得していますが、望ましくない応答の場合、「return false;」の後でもフォームが送信されます。(関数 display() を参照)

function display() までスクロールしてください。メッセージが「no」または「nv」の場合、フォームを送信したくありません。基本的に「falseを返す」は機能しません

4

3 に答える 3

2

もう 1 つの方法は、デフォルトのイベント(この場合は送信)をキャンセルすることです。

このような:

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(); falseを返します。

});

javascriptエラー(構文またはその他)がある場合は常に、検証が失敗した場合でも、フォームが送信されます(ajaxのない通常のhtmlフォームのように)。私のポイントは、どこかに構文エラーがあるかもしれないということです。

于 2012-12-18T10:42:15.010 に答える
0

参照: jQuery preventDefault();

jQueryで投稿してみる(Webサイトで使っている場合)

于 2012-12-18T10:32:58.623 に答える