2012-04-12 54 views
0

我正在使用遠程表單在Rails中提交註釋。用戶應該而不是被髮送到一個新的頁面,因爲我使用這個遠程表單。如何在提交後使用Coffeescript清除Rails 3中的遠程表單?

當我點擊「提交」時,我希望它有一個狀態淡出,表示「感謝提交」和表格清晰。然而,我無法弄清楚如何爲我的生活做到這一點。

問題出在當我做$('form')。submit - >然後清除文本區域時,它會在我實際完成提交之前重置它,所以我在Rails中獲得空白提交。

我使用的是Rails 3.2,Coffeescript和Jquery。

+0

你能證明你到目前爲止做了什麼嗎? – DanS 2012-04-12 22:21:03

+0

這不是很好格式化 $ - > \t $( '選項卡窗格>的形式。')提交 - > \t \t showStatus! 「問題提交」 \t \t $('[name =「broadcast [comments_attributes] [0] [content]」]')。val('') – tibbon 2012-04-12 22:24:59

回答

1

也許你是想爲表單提交這樣做,但...你使用jQuery的bind(或活的)方法並等待它返回成功。

$('#submit_button') 
    .live('ajax:success', clearForm) 
    .live('ajax:success', notifyUser) 

如果你想這樣做,不管成功的,或在請求的任何階段檢查出其他可用的AJAX回調「beforeSend」,「完成」,「錯誤」,等

0

這應該工作:

$('form').submit (e) -> 
    e.preventDefault() # prevent form submitting multiple times 
    $.post @action, $(@).serializeArray() # manually submit the form 
    $(@).find('input').each -> @reset() # afterwards clear the form 
    return 

而且它產生以下的javascript:

$('form').submit(function(e) { 
    e.preventDefault(); 
    $.post(this.action, $(this).serializeArray()); 
    $(this).find('input').each(function() { 
    return this.reset(); 
    }); 
}); 
+0

返回false似乎阻止它完全由於某種原因提交。它的渲染返回false;在javascript – tibbon 2012-04-12 22:30:36

+0

我修改了我的答案 – DanS 2012-04-12 22:33:02

+0

嗯,我覺得我們真的很接近。它似乎並沒有提交到函數的結尾,這真的很奇怪。我使用了斷點,並且在@submit被調用時看到了這一點,沒有任何東西在rails控制檯中彈出,直到函數在已經更改值之後結束。 – tibbon 2012-04-12 23:16:08

0

表提交加載新頁面。如果你想保持在同一個頁面上的用戶,仍然提交表單數據,你必須手動發送表單:

$('form').bind 'submit', (e) -> 
    e.preventDefault() # don't send the user to a new page 
    $.post this.action, $(this).serializeArray() # manually submit formdata to form url 
    $(this).find(':input').each -> this.reset() # reset all fields in the form 

(我沒有測試以上,希望沒有錯誤)

1

在丹斯」回答的變化:

$('form').submit (e) -> 
    e.preventDefault() # prevent form submitting multiple times 
    $.post(@action, $(@).serializeArray()).done -> # manually submit the form 
    $(@).find('input').each -> @reset() # afterwards clear the form 
    return 

我Ajax調用後添加的回調完成,這將迫使等待阿賈克斯清除表單之前完成。

相關問題