2013-06-26 82 views
2

我有一個表格:提交使用jQuery形式不起作用

<form action="thanks.php" onsubmit="return false" class="submitForm"> 
... Some Inputs ... 
</form> 

和jQuery代碼:

$(document).ready(function() { 
     $("form.submitForm").on("submit", function() { 
     $("form.submitForm").attr("onsubmit", "return true"); 
     $("form.submitForm").submit; 
    }); 
}); 

現在我想與jQuery代碼提交表單。它的作品,但只在第二個輸入或提交... 我不明白爲什麼它不工作...

感謝您的任何幫助!

對不起我的英語錯誤,我來自德國。

+0

在末尾添加'return false;'會防止默認提交行爲,如果這是您想要的,並且我相信'.smitmit'需要'.submit();' –

+0

在使用'之前。提交;'。 我試圖 '$( 「form.submitForm」)上( 「提交」,函數(){ \t \t $( 「form.submitForm」)ATTR( 「的onsubmit」, 「返回true」); \t \t $(「form.submitForm」)。submit; return false; \t});'但它不起作用... 是否有可能屬性「onsubmit」沒有值「return第一次提交後DOM中的「true」? – DerFuchs10

回答

2

爲什麼不提交:

您的表單提交犯規,因爲你有onsubmit屬性return false。這是阻止表單提交,這可能是你想要的,因爲你試圖用$("form.submitForm").submit;重新提交。 Unfortunnatly,這是不行的,因爲你需要添加括號這樣的:$("form.submitForm").submit();

爲什麼它提交第二次:

在第一次提交,你是防止默認行爲(return false),但你正在將onsubmit屬性更改爲return true。這將首先刪除您的默認預防。

所以,總體來說,你clikc在第一時間,防止默認行爲與return false,犯規提交因爲在$("form.submitForm").submit;一個misstake,然後更改return false爲真,消除了什麼預防的形式從提交。

解決方案:

使用此代碼:

$(document).ready(function() { 
    $("form.submitForm").on("submit", function(e) { 
     e.preventDefault() 
     $("form.submitForm").submit(); 
    }); 
}); 

但如果你有沒有其他的代碼,爲什麼哥哥的preventDefault然後執行默認行爲?

+0

後來我添加了一些驗證函數:) – DerFuchs10