JQuery Tokeninput генерирует несколько входов для 1 входа - PullRequest
1 голос
/ 26 марта 2012

У меня проблема с входными данными токена jQuery, это мой код ruby ​​on rails:

<% @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. Если я проверю с помощью firebug, то это код:

    <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

РЕДАКТИРОВАТЬ 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',

  });

});

1 Ответ

0 голосов
/ 29 марта 2012

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

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

...