2013-04-16 192 views
2

我以編程方式創建表單並嘗試提交它。但是submit()函數什麼都不做。JQuery表單提交不提交

$(".deleteLink").click(function(event) { 
    event.preventDefault(); 

    var form = $("<form></form>"); 
    form.attr("method", "POST"); 
    form.attr("action", "http://myurl.com"); 

    form.submit(function() { 
     alert('Handler for .submit() called.'); 
     return false; 
    }); 
}); 

當我在Firebug中設置斷點時,我看到click()函數被調用,並且「form」變量被正確填充。一切正常,直到submit()方法。提交處理程序中的alert()方法永遠不會被調用。

當submit()被調用時,jquery.js中的代碼會執行,但我很難通過它來查看它的功能。

我已確認頁面上沒有其他名稱爲「submit」的對象。

任何人都有線索發生了什麼?

澄清:調用submit()函數時沒有函數()參數也什麼都不做。

進一步說明:調用submit(function(){alert()})後跟submit()會調用alert(),但表單仍然沒有被提交。

又一個說明:我想整個頁面刷新。我沒有試圖做一個Ajax提交。

+0

觸發提交 –

+1

做'form.trigger(「提交」);'爲實際提交 – karthikr

+0

你能鏈接? – howderek

回答

1

必須注入新的形式插入到文檔提交前:

$("body").append(form); 
form.submit(); 
+0

賓果!就是這樣。 – ccleve

1

要連接提交的,而不是調用提交表單對象的事件處理程序,使用此

form.submit(); 

您的代碼將

$(".deleteLink").click(function(event) { 
    event.preventDefault(); 

    var form = $("<form></form>"); 
    form.attr("method", "POST"); 
    form.attr("action", "http://myurl.com"); 

    form.submit(function() { 
     alert('Handler for .submit() called.');  
    }); 
    form.submit(); 
}); 
+0

請參閱上面的說明。 – ccleve

0

呼叫form.submit()觸發提交表單

0

你有沒有試過類似的東西?

$(".deleteLink").click(function(event) { 

    event.preventDefault(); 

    $.post( 
     'http://myurl.com', 
     function(){ 
      alert('success'); 
      // window.location.href = 'other page'; 
     } 
    ); 

}); 
+0

我認爲這是一個ajax提交()。我想刷新整個頁面。 – ccleve

+0

window.location.href ='其他頁面';會做 – germanandino