【发布时间】:2014-05-14 03:59:16
【问题描述】:
所以当我第一次进入使用 TokenInput 的页面时,tokeninput 永远不会点击我的输入表单。只有在我刷新页面后它才能工作。为什么会这样?当我最初访问该页面时,如何让它发挥作用?
当我第一次访问我的页面时。查看玩家领域。
一旦我刷新
我猜 javascript 出了点问题。调查该问题后,似乎整个页面都加载了日期字段和复选框的正确数据。在我刷新正确的数据后,我的令牌输入中应该出现正确的数据,但我的复选框和日期的值不正确。
日期和复选框值属于另一个名册。
应用程序.html
<%= stylesheet_link_tag "application", "token-input-facebook", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "jquery-tokeninput", "data-turbolinks-track" => true %>
应用程序.js
//= require jquery
//= require jquery_ujs
//= require bootsy
//= require turbolinks
//= require_tree .
//= require twitter/bootstrap
//= require jquery_nested_form
});
$(function() {
$("#roster_player_tokens").tokenInput("/players.json", {
crossDomain: false,
prePopulate: $("#roster_player_tokens").data("pre"),
theme: "facebook",
propertyToSearch: "gamertag",
hintText: "Type in a gamertag",
searchingText: "Searching...",
tokenLimit: 4,
preventDuplicates: true
});
});
我的名单表格
<%= form_for([@team, @roster]) do |f| %>
<% if @roster.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@roster.errors.count, "error") %> prohibited this roster from being saved:</h2>
<ul>
<% @roster.errors.full_messages.each do |msg| %><li><%= msg %></li><% end %>
</ul>
</div>
<% end %>
<form role="form">
<%= f.label :current %><br>
<%= f.check_box :current %><br>
<%= f.label :start %><br>
<%= f.date_select :start %><br>
<%= f.label :end %><br>
<%= f.date_select :end, {:include_blank => true, :default => nil} %><br>
<%= f.label :player_tokens, "Players" %><br />
<%= f.text_field :player_tokens, "data-pre" => @roster.players.map(&:attributes).to_json %><br>
<%= f.submit :class => "btn btn-warning" %>
</form>
<% end %>
【问题讨论】:
-
我完全没有使用 Rails 的经验,所以这可能无关紧要,但如果这是普通的 jQuery,那么
$.tokenInput()函数需要包装在$(document).ready()中。 (如果 rails 自动执行此操作,那么这是没有用的 - 但认为值得一提。) -
感谢我使用了您的示例并将我的脚本放在我的 html 文件中而不是 application.js 中,现在效果更好。因此,在第一页加载时,玩家字段和所有其他字段都是正确的。当我刷新玩家字段时是相同的(它应该,但现在其他字段更改为我之前查看的名册字段。无论如何你可以做出答案,我会接受它。谢谢
-
你能解释清楚吗?一个页面上是否有多个这样的表单?他们都使用相同的html ID吗?那会破坏事情...
-
澄清一下:“但现在其他字段更改为我之前查看的名册字段”是您失去我的地方!
-
你在我的图片中看到的是整个页面,它们使用相同的 ID,但是当我从一个名册转到另一个名册并刷新时,我得到的数据在刷新后不正确(只有球员字段是一样的)。我认为这是因为在 rails 4 中引入的 turbo-links,我现在正在看这个问题。 stackoverflow.com/questions/18770517/…
标签: ruby-on-rails ruby-on-rails-4 jquery-tokeninput