在页面上的多个输入上使用tokeninput jquery插件

时间:2011-05-23 02:26:34

标签: jquery ruby-on-rails input token jquery-tokeninput

我正在使用jquery tokeninput plugin from loopj.com这是我的JS文件:

$(document).ready(function() {

    // Token input plugin:

    $("#issuer").tokenInput("/issuers.json",{
        crossDomain: false,
        theme: "facebook",
        prePopulate: $("#issuer").data("pre"),
        preventDuplicates: true
    });

    $("#shareholder").tokenInput("/shareholders.json",{
        crossDomain: false,
        theme: "facebook",
        prePopulate: $("#shareholder").data("pre"),
        preventDuplicates: true
    });

});

这是我的标记:

<form method="post" action="/certificates" accept-charset="UTF-8">
<input type="hidden" value="✓" name="utf8">
<input type="hidden" value="fSO/GJxIGEHLCb/zmd1B7qTwUYnGx5yyIxWTkEk/ies=" name="authenticity_token">\

  <div class="field">
    <label for="issuer">Issuer</label><br>
    <input type="text" size="30" name="certificate[issuer]" id="issuer" data-pre="[null]">
  </div>

 <div class="field">
    <label for="shareholder">Shareholder</label><br>
    <input type="text" size="30" name="certificate[shareholder]" id="shareholder" data-pre="[null]">
  </div>
</form>

我的tokenize插件适用于#issuer但不适用于#shareholder,如果我移动顶部有#shareholder选择器的jQuery代码,令牌输入代码适用于#shareholder但是停止为另一个工作。我怎么能让它们都适用于它们?

此外,如果我在编辑模式下具有相同标记的相同表单 - 这意味着data-pre具有有效的JSON而不是[null],则令牌输入适用于这两个字段。

1 个答案:

答案 0 :(得分:4)

我真的不知道为什么它不适合你。我通常使用此脚本将tokenInput添加到多个字段:

$(".token_input").each(function(){
  var el = $(this);
  el.tokenInput(el.data("url"), {
    crossDomain: false,
    theme: "facebook",
    prePopulate: el.data("pre"),
    preventDuplicates: true
  });
});

token_input作为类和data-url属性添加到输入字段非常重要。这是我如何做到的(在Rails中):

<%= f.text_field :issuer_tokens, :class => "token_input", "data-url" => "/issuers.json", "data-pre" => @certificate.issuers.map(&:attributes).to_json %>
<%= f.text_field :shareholder_tokens, :class => "token_input", "data-url" => "/shareholders.json", "data-pre" => @certificate.shareholders.map(&:attributes).to_json %>

希望它适合你。如果它不起作用,请尝试下载新版本的tokenInput。