2012-06-11 158 views
0

我有一個jquery函數,控制我的表單的所有必填字段被填充,並取消提交如果其中一個必填字段爲空。jquery允許表單提交後取消提交

取消表單提交工作正常,問題是,當我提交我的表單提交失敗後,它仍然取消表單提交,當它應該允許提交,因爲所有表格填寫正確,這裏是代碼:

-Cancel是一個bool,用於指示是否填充了所有表單域。

if (cancel) 
    { 
     $('#form_login').submit(function() 
     { 
      return false; 
     }); 
    } 
    else 
    { 

     $('#form_login').submit(function() 
     { 
      return true; 
     }); 
    }; 

我在做什麼錯?

謝謝

回答

1

您最好在提交方法中調用您的驗證代碼。例如,一個方法會執行一些驗證並返回true或false。您可以將該值作爲提交方法返回值返回。

例如:

$('#form_login').submit(function() 
{ 
    return isMyFormValid();  
}); 

function isMyFormValid(){ 
    //return true or false depending on some conditions. 
} 
+0

正常工作,謝謝! –

+0

@AlbertPrats:不錯,沒問題! –

0
if(cancel) { 
    $('#form_login').submit(); 
} else { 
    return false; 
} 
0

的問題是,你是附加功能,以表單的提交事件多次。第一次,當驗證失敗時,將附加return false;方法,並且每次提交表單時都會調用此函數,即使稍後(驗證成功時)再附加其他函數也是如此。

你想要做的是:

$('#form_login').submit(function() { 
    //define the value of 'cancel' here 
    return cancel; 
} 

如果您已經連接的功能,提交事件,並希望覆蓋它,必須先刪除已附加功能:

$('#form_login').off('submit'); 

然後附加新功能。

0

如何嘗試api暗示什麼:

$('#form_login').submit(function() 
{ 
     if (cancel) {return false;} 
     return true;  
});