我有一个 JQueryUI datepicker 定义如下:
$(function() {
$(".visit_date").datepicker({
changeMonth: true,
changeYear: true,
showButtonPanel: true,
dateFormat: "yy-mm-dd"
});
});
产生 Datepicker 文本框的视图代码是
<td><%= f.label :visit_date %></td>
<td><%= text_field_tag :visit_date, @visit.visit_date, :class => 'visit_date'
并且视图在渲染时会在这样的标签之间生成:
<div id="action_window">
(rendered HTML to be acted on by user)
</div>
为什么 Javascript 选择器“.visit_date”不与此视图挂钩?换句话说,没有它曾经工作的“action_window”标签。我的想法是“.visit_date”将与“visit_date”类匹配任何内容。
====================== 2012 年 11 月 7 日更新。Javascript代码:
$(function() {
$("#visit_date").datepicker({
changeMonth: true,
changeYear: true,
showButtonPanel: true,
dateFormat: "yy-mm-dd"
});
});
用户按下按钮的原始位置:
<%= link_to "Add Visit", new_client_visit_path(@client), :remote => true, :class => "btn btn-primary btn-large" %>
在访问控制器中:
respond_to do |format|
format.html
format.js { }
end
在视图/访问/new.js.erb 中:
$('#action_window').html('<%= escape_javascript render(:partial => "new") %>');
$('#action_window').show;
(#action_window 是客户端索引视图中的一个 div)
在视图/访问/_new.html.erb 中:
<%= render "form" %>
<%= link_to "Cancel", @client, :class => "btn btn-primary btn-large" %>
在视图/访问/_form.html.erb 中:
%= form_for [@client, @visit] do |f| %>
<td><%= text_field_tag :visit_date, @visit.visit_date, :class => 'visit_date' %>
我无法让 Datepicker 工作,大概是因为创建“新访问”视图的 HTML 被渲染,并且不知何故 JQueryUI 无法在没有将“hasDatepicker”添加到类的情况下关联它。