2012-03-17 53 views
0

RailsTutorial Exercise 10.5.7要我插入一個字符計數器給micropost表單。我使用this plugin完成任務。jQuery InsertAfter在Rails表單上覆制

除了字符計數div被插入兩次之外,一切正常,正如您在以下屏幕截圖中所看到的。

Two character count divs

我懷疑這種情況正在發生,因爲我使用的是form_for標籤,它需要一個塊。這裏的頁碼:

<%= javascript_include_tag "character-counter", "character-counter-options" %> 
<%= form_for(@micropost) do |f| %> 
    <%= render 'shared/error_messages', object: f.object %> 
    <div class="field"> 
    <%= f.text_area :content, placeholder: "Compose new micropost...", 
           id: "new-micropost" %> 
    </div> 
    <%= f.submit "Post", class: "btn btn-large btn-primary" %> 
<% end %> 

我可以發佈的JavaScript如果需要,但就像我說的,事情工作正常,除了重複。我沒有更改任何插件代碼,只是我的選項遵循插件源中包含的示例。所有這些都可以在第一段的鏈接中找到。


更新:這裏是我使用的JavaScript。插件代碼很長,所以我選擇將它放在paste中。 InsertAfter出現在粘貼的第38行。我的選擇也是過去的,但由於它們很短,您也可以在這裏閱讀它們。

var info; 
$(document).ready(function(){ 
    var options = { 
     'maxCharacterSize': -2, 
     'warningStyle' : 'warning', 
     'warningNumber': 40, 
     'displayFormat' : '#input/140' 
    }; 
    $('#new-micropost').textareaCount(options); 
}); 
+2

上述代碼沒有錯。 JavaScript代碼可能有問題。你可以在這裏發佈嗎? – asitmoharna 2012-03-17 21:03:37

+0

@asitmoharna我已經添加了代碼。感謝您的期待。這只是我發現的第一個插件,我可以饒舌,但它已經很老了。如果你知道另一個,隨時提出建議。 – jrhorn424 2012-03-17 21:15:09

+0

糟糕,找不到線索。 :( – asitmoharna 2012-03-17 21:43:19

回答

0

事實證明,因爲我在資產管道中包含JavaScript,所以它被加載了兩次。它由資產管道加載一次,然後再次以部分形式加載(請參閱OP中模板代碼的第一行)。

參見:$(function) gets called twice in Rails 3.2.1 App

我並不真的需要在每一頁上的代碼,只是在局部,所以我會在文件移出資產管道。 :/

0

對於我的一個應用程序,我使用的是jquery.char_limit.js。 它適用於我。

+0

我不想實際限制輸入,只顯示一個字符數。我在做驗證服務器端。 [這個插件]也是我想要的,但是不幸的是它插入了兩次計數器好。 – jrhorn424 2012-03-17 21:51:26

+0

這意味着你需要檢查容器,即文本區域ID,並確保沒有其他具有該ID的元素。嘗試更改ID或新班級。 – asitmoharna 2012-03-17 21:58:45