2012-03-26 2 views
1

У меня есть проблема с входами tokeninput JQuery, это мой рубин на рельсах код:JQuery tokeninput генерирует несколько входов для 1 вход

<% @free_preferences.each do |fp| %> 
<% eventCriteria = EventCriteria.find_by_id(fp.event_criteria_id)%> 
<% if !eventCriteria.is_exclusive? %> 
    <% form_for fp do |f| %> 

     <%= f.label :tag_tokens1, eventCriteria.name %> 
     <%= f.text_field :tag_tokens1, "data-pre" => fp.tags.map(&:attributes).to_json %> 

     <%= f.submit "Save preference", :disable_with => 'Saving preference...' %> 
    <% end %> 
<% else %> 
    <% form_for fp do |f| %> 

     <%= f.label :tag_tokens2, eventCriteria.name %> 
     <%= f.text_field :tag_tokens2, "data-pre" => fp.tags.map(&:attributes).to_json %> 

     <%= f.submit "Save preference", :disable_with => 'Saving preference...' %> 
    <% end %> 
<% end %> 

И это сгенерированный исходный HTML-код:

<form accept-charset="UTF-8" action="/subscription_preferences/128" class="edit_subscription_preference" id="edit_subscription_preference_128" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="_method" type="hidden" value="put" /><input name="authenticity_token" type="hidden" value="bYJedYxgjjA+C+CWUkZpXH3mxNxOf8XPQgwp5/DEUp8=" /></div> 
     <label for="subscription_preference_tag_tokens1">Explicit include</label> 
     <input data-pre="[{&quot;updated_at&quot;:&quot;2012-03-20T08:48:53Z&quot;,&quot;name&quot;:&quot;Windows xp&quot;,&quot;id&quot;:70,&quot;created_at&quot;:&quot;2012-03-20T08:48:53Z&quot;}]" id="subscription_preference_tag_tokens1" name="subscription_preference[tag_tokens1]" size="30" type="text" /> 

<input data-disable-with="Saving preference..." id="subscription_preference_submit" name="commit" type="submit" value="Save preference" /> 

<form accept-charset="UTF-8" action="/subscription_preferences/129" class="edit_subscription_preference" id="edit_subscription_preference_129" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="_method" type="hidden" value="put" /><input name="authenticity_token" type="hidden" value="bYJedYxgjjA+C+CWUkZpXH3mxNxOf8XPQgwp5/DEUp8=" /></div> 
     <label for="subscription_preference_tag_tokens2">Explicit exclude</label> 
     <input data-pre="[]" id="subscription_preference_tag_tokens2" name="subscription_preference[tag_tokens2]" size="30" type="text" /> 

<input data-disable-with="Saving preference..." id="subscription_preference_submit" name="commit" type="submit" value="Save preference" /> 

Это кажется хорошим, но проблема заключается в том, что для каждого входа subscription_preference_tag_tokensX созданы четыре JQuery tokeninputs, если я проверю с поджигатель это код:

<form accept-charset="UTF-8" action="/subscription_preferences/128" class="edit_subscription_preference" id="edit_subscription_preference_128" method="post"> 
<div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display:  inline; "> 

<label for="subscription_preference_tag_tokens1">Explicit include</label> 
<ul class="token-input-list-facebook"> 
<ul class="token-input-list-facebook"> 
<ul class="token-input-list-facebook"> 
<ul class="token-input-list-facebook"> 

<input data-pre="[{"updated_at":"2012-03-20T08:48:53Z","name":"Windows xp","id":70,"created_at":"2012-03-20T08:48:53Z"},{"updated_at":"2012-03-13T10:01:10Z","name":"something","id":59,"created_at":"2012-03-13T10:01:10Z"}]" id="subscription_preference_tag_tokens1" name="subscription_preference[tag_tokens1]" size="30" type="text" style="display: none; "/> 

<input data-disable-with="Saving preference..." id="subscription_preference_submit" name="commit" type="submit" value="Save preference"/> 

</form> 

<form accept-charset="UTF-8" action="/subscription_preferences/129" class="edit_subscription_preference" id="edit_subscription_preference_129" method="post"> 
<div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: inline; "> 

<label for="subscription_preference_tag_tokens2">Explicit exclude</label> 
<ul class="token-input-list-facebook"> 
<ul class="token-input-list-facebook"> 
<ul class="token-input-list-facebook"> 
<ul class="token-input-list-facebook"> 

<input data-pre="[]" id="subscription_preference_tag_tokens2" name="subscription_preference[tag_tokens2]" size="30" type="text" style="display: none; "/> 
<input data-disable-with="Saving preference..." id="subscription_preference_submit" name="commit" type="submit" value="Save preference"/> 
</form> 

Я не знаю, почему ИК создает четыре «token- input-list-facebook "для каждого" subscription_preference_tag_tokensX ". Это картина проблемы:

enter image description here

EDIT 1:

Это мой JQuery код:

$(function() { 
    $('#subscription_preference_tag_tokens1').tokenInput('/tags.json', { 
    crossDomain: false, 
    preventDuplicates: true, 
    prePopulate: $('#subscription_preference_tag_tokens1').data('pre'), 
    theme: 'facebook', 

    }); 
    $('#subscription_preference_tag_tokens2').tokenInput('/tags.json', { 
    crossDomain: false, 
    preventDuplicates: true, 
    prePopulate: $('#subscription_preference_tag_tokens2').data('pre'), 
    theme: 'facebook', 

    }); 

}); 
+0

Можете ли вы разместить некоторые свои javascript-коды? – moritz

+0

Hi mosch, я редактировал мой вопрос, вы можете найти код javascript в конце сообщения. – TomasMax

ответ

0

Я ищу тот же ответ, дело в том, все поля получают одинаковые json-файлы в качестве ответа. Поэтому каждая часть вашего файла, которая становится токеном, заполняет ваше поле этой частью.

Если вы когда-либо находите решение, plz сообщите мне. Но, вероятно, вам нужно создать разные jsons для каждого поля, так как каждое поле ищет определенную часть файла.

+0

Я не понимаю, мне нужен один и тот же json для каждого входа, почему есть 4 joquery-tokeninputs? – TomasMax

+0

, потому что u вызывает функцию 2 раза и каждый раз повторяется для количества результатов в вашем json, в этом случае 2, поэтому 2 * 2 = 4. –

+0

Дело в том, что это поле не соблюдает идентификатор, который он принадлежит, он выглядит ответ дыры json. Я пытаюсь сделать то же самое, но до сих пор не добился успеха, я считаю, что ответ генерирует переменную, которая собирает часть ответа json, принадлежащую этому конкретному полю, и препопыляющую из этой переменной, а не из json. Или создайте способ генерации уникальных json с отдельными ответами для каждого поля. Если какая-нибудь идея придет к вам, PLZ, дайте мне знать. [email protected] –

 Смежные вопросы

  • Нет связанных вопросов^_^