2012-03-17 1 views
0

RailsTutorial Exercise 10.5.7 просит меня вставить счетчик символов для формы микропоста. Я использую this plugin для выполнения задачи.jQuery InsertAfter duplication on Rails form

Все работает, за исключением того, что число символов 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, если это необходимо, но, как я сказал, все работает правильно для дублирования исключением. Я не изменил какой-либо код плагина, просто мои параметры следуют примерам, включенным в источник плагина. Все это можно найти в ссылке из первого абзаца.


Update: Вот 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

+0

@asitmoharna Я добавил код. Спасибо, что посмотрели. Это был только первый плагин, который я обнаружил, что я смог заглянуть, но он старый. Если вы знаете другого, не стесняйтесь предлагать это. – jrhorn424

+0

К сожалению, не находите подсказки. :( – asitmoharna

ответ

0

Получается, так как я включал javascript в конвейер активов, он загружался дважды. Он был загружен один раз конвейером активов, а затем снова в моей форме частичным (см. Первую строку кода шаблона в моем OP).

См: $(function) gets called twice in Rails 3.2.1 App

Я действительно не нужен код на каждой странице, только в том, что частичное, так что я буду перемещать файлы из трубопровода активов. :/

0

Для одного из моих приложений я использую jquery.char_limit.js. Он отлично работает для меня.

+0

Я не хочу на самом деле ограничивать ввод, просто покажите количество символов. Я выполняю проверку на стороне сервера. [Этот плагин] (http://cssglobe.com/post/7161/jquery-plugin-simplest-twitterlike-dynamic-character-count-for-textareas) также делает то, что я хочу, но он также, к сожалению, вставляет счетчик дважды, как Что ж. – jrhorn424

+0

Это означает, что вам нужно проверить контейнер, то есть идентификатор текстовой области, и убедиться, что нет другого элемента с этим идентификатором. Попробуйте изменить идентификатор или новый класс. – asitmoharna