2011-10-18 25 views
0

如何在用戶提交投票後讓此按鈕消失?讓一個按鈕在提交後消失

 <p id="button_<%= review.id %>"><%= f.submit "vote" %></p> 
+0

是的,一旦頁面重新加載,按鈕將不會顯示。我有一個輔助方法來做到這一點。 – chief

+0

請確保並在每個瀏覽器中檢查它是否會繼續提交(並且不會在AJAX調用中捕獲)。否則,它可能無法在某些瀏覽器中工作(如在表單中可能無法提交),並且可能會被燒燬。 –

+0

使用表單的提交事件來禁用按鈕,刪除它可能會造成混淆。 – RobG

回答

3

我會禁用該按鈕而不是隱藏;創建一個較少混淆的界面。

您可以只需添加一個onclick屬性做到這一點最容易:

<p id="button_<%= review.id %>" onclick="this.disabled=true;"><%= f.submit "vote" %></p> 

但是,如果你想隱藏它,你可以使用this.style.display='none';代替。

$('#button_<%= review.id %>').click(function() { 
    $(this).remove(); // or $(this).hide(); 
} 

編輯:this shows the difference between Dr.Dredel's and my solution

如果您已經使用jQuery雖然(或打算做這樣的東西很多)(如果我能記得香草JS)


onsubmit版本,以RobG快樂(你必須把它放在<form>

<form ... onsubmit="document.getElementById('button_<%= review.id %>').disabled=true;"> 

他說得對,這樣做更有意義onsubmit;還有其他方式可以通過按回車來提交表單。想必你還是會想按鈕獲取禁用在這樣的情況下(這如果我沒有記錯的話也會阻止你通過提交輸入兩次)

編輯:爲什麼是的,它http://jsfiddle.net/mnbayazit/9Snna/2/

+0

我相信visiblity ='hidden'是更多的瀏覽器通用...我從來沒有使用過顯示來隱藏按鈕......但也許它是一樣有效 –

+0

@ Dr.Dredel:你不想設置visibility = hidden總的來說......可能會在視覺上隱藏元素,但它仍然佔用佈局中的空間。通常你想要摺疊它周圍的內容,這是display = none所做的事情,而且實際上很常見並且得到很好的支持。相當肯定的是jQuery在內部也是這樣做的。 – mpen

+0

@Dr。Dredel:請參閱http://jsfiddle.net/mnbayazit/e8P4U/ – mpen

2

這是基於這樣一種假設,即您希望人們能夠重新訪問原始網頁並且不讓投票按鈕再次顯示,而不是在您點擊投票後隱藏它。如果你想讓它消失並使用ajax,到目前爲止的其他答案解釋瞭如何做到這一點。

在您的控制器中,查看是否有人提交了審覈意見,無論他們在審覈什麼內容。

#this assumes that you have foreign keys user_id and article_id in your reviews table 
# and that @article and @user are the objects you're passing down 
@posted_review = Review.find_by_user_id_and_article_id(@article.id, @user.id) 

然後,在視圖中:

<% if @posted_review.nil? %> 
<p id="button_<%= review.id %>"><%= f.submit "vote" %></p> 
<% end %> 

我離開@posted_review設置爲實際的審查對象,這樣如果你需要,如調用<%= @posted_review你可以訪問它的屬性.created_at%>

+0

+1,用於解釋事物的紅寶石方面......儘管它看起來像OP已經覆蓋(評論在Q) – mpen

+0

謝謝。看起來他在閱讀我的帖子後做了一個忍者編輯。在閱讀你的評論並看到上面的內容之後,我以爲我在那裏變老了。 – trogdor33