最近 div 作为 rails 中 bootstrap 日期选择器的容器和咖啡脚本和 simple_form
Closest div as container for bootstrap datepicker in rails and coffee script and simple_form
我正在尝试在我的 rails 应用程序中设置 bootstrap 日期选择器。
它工作正常,但 css 一切都搞砸了,除非我分配一个可以容纳弹出窗口的容器 div。
我想创建一个通用方法来检查最接近的 div 弹出窗口,而不是将其附加到正文。
这是我的代码
咖啡
jQuery ->
jQuery('input.date_picker').datepicker
dateFormat: 'mm/dd/yyyy'
todayHighlight: true
container: jQuery(this).closest('div').attr(class)
autoclose: true
todayBtn: true
Erb
<%= simple_form_for @qc_assay_parameter, :url => qc_assay_parameter_path(@qc_assay_parameter) do |f| %>
<%= f.error_messages %>
<%= f.input :reference_number, label: 'Reference #', error: 'Reference Number is mandatory' %>
<%= f.input :qc_assay_product_name_with_revision, label: 'Analyte , Rev#', url: '/qc_revisions', as: :autocomplete, placeholder: 'Type in Analyte Name', :input_html => {:class =>"span2", :rows => 6, :type => :text}%>
<%= f.input :assay_date, as: :date_picker, placeholder: 'mm/dd/yyyy' %>
<%= f.button :submit %>
<%end%>
普通Html
<form id="edit_qc_assay_parameter_176094" class="simple_form edit_qc_assay_parameter" novalidate="novalidate" method="post" action="/qc_assay_parameter.176094" accept-charset="UTF-8">
<div style="margin:0;padding:0;display:inline">
<div class="input string required qc_assay_parameter_reference_number">
<div class="input autocomplete optional qc_assay_parameter_qc_assay_product_name_with_revision">
<label class="autocomplete optional control-label" for="qc_assay_parameter_qc_assay_product_name_with_revision">Analyte , Rev#</label>
<span class="ui-helper-hidden-accessible" role="status" aria-live="polite"></span>
<input id="qc_assay_parameter_qc_assay_product_name_with_revision" class="autocomplete optional span2 ui-autocomplete-input" type="text" value="LAP revision 0" size="30" rows="6" placeholder="Type in Analyte Name" name="qc_assay_parameter[qc_assay_product_name_with_revision]" data-autocomplete="/qc_revisions" autocomplete="off">
</div>
<div class="input date_picker optional qc_assay_parameter_assay_date">
<label class="date_picker optional control-label" for="qc_assay_parameter_assay_date">Assay date</label>
<input id="qc_assay_parameter_assay_date" class="string date_picker optional datepicker" type="date_picker" value="Sun, 03 Apr 2016 00:00:00 -0500" size="30" placeholder="mm/dd/yyyy" name="qc_assay_parameter[assay_date]">
</div>
<input class="btn" type="submit" value="Update Qc assay parameter" name="commit">
</form>
我想做这样的事情
jQuery ->
jQuery('input.date_picker').datepicker
dateFormat: 'mm/dd/yyyy'
todayHighlight: true
container: jQuery(this).closest('div').attr(class)
autoclose: true
todayBtn: true
container: jQuery(this).closest('div')
如果 date_picker
class 始终设置在 input
上,那么您可以这样做:
var nearestDivClassName = '.' + $('.date_picker').closest('div').attr('class')
jQuery('input.date_picker').datepicker
dateFormat: 'mm/dd/yyyy'
todayHighlight: true
container: nearestDivClassName
autoclose: true
todayBtn: true
请注意,container
选项需要是一个元素选择器,因此我们在 .attr('class')
返回的字符串前加上一个 .
更新
因为您需要它足够通用以解释多个 .date_picker
,您可以使用 jQuery 的 .each()
方法遍历它们,然后您可以使用this
和你一样 expect/need:
$('input.date_picker').each(function(){
$(this).datepicker({
dateFormat: 'mm/dd/yyyy',
todayHighlight: true,
autoclose: true,
todayBtn: true,
container: closestDivClassName($(this))
});
});
function closestDivClassName($el){
return '.' + $el.closest('div').attr('class');
}
我正在尝试在我的 rails 应用程序中设置 bootstrap 日期选择器。
它工作正常,但 css 一切都搞砸了,除非我分配一个可以容纳弹出窗口的容器 div。
我想创建一个通用方法来检查最接近的 div 弹出窗口,而不是将其附加到正文。
这是我的代码
咖啡
jQuery ->
jQuery('input.date_picker').datepicker
dateFormat: 'mm/dd/yyyy'
todayHighlight: true
container: jQuery(this).closest('div').attr(class)
autoclose: true
todayBtn: true
Erb
<%= simple_form_for @qc_assay_parameter, :url => qc_assay_parameter_path(@qc_assay_parameter) do |f| %>
<%= f.error_messages %>
<%= f.input :reference_number, label: 'Reference #', error: 'Reference Number is mandatory' %>
<%= f.input :qc_assay_product_name_with_revision, label: 'Analyte , Rev#', url: '/qc_revisions', as: :autocomplete, placeholder: 'Type in Analyte Name', :input_html => {:class =>"span2", :rows => 6, :type => :text}%>
<%= f.input :assay_date, as: :date_picker, placeholder: 'mm/dd/yyyy' %>
<%= f.button :submit %>
<%end%>
普通Html
<form id="edit_qc_assay_parameter_176094" class="simple_form edit_qc_assay_parameter" novalidate="novalidate" method="post" action="/qc_assay_parameter.176094" accept-charset="UTF-8">
<div style="margin:0;padding:0;display:inline">
<div class="input string required qc_assay_parameter_reference_number">
<div class="input autocomplete optional qc_assay_parameter_qc_assay_product_name_with_revision">
<label class="autocomplete optional control-label" for="qc_assay_parameter_qc_assay_product_name_with_revision">Analyte , Rev#</label>
<span class="ui-helper-hidden-accessible" role="status" aria-live="polite"></span>
<input id="qc_assay_parameter_qc_assay_product_name_with_revision" class="autocomplete optional span2 ui-autocomplete-input" type="text" value="LAP revision 0" size="30" rows="6" placeholder="Type in Analyte Name" name="qc_assay_parameter[qc_assay_product_name_with_revision]" data-autocomplete="/qc_revisions" autocomplete="off">
</div>
<div class="input date_picker optional qc_assay_parameter_assay_date">
<label class="date_picker optional control-label" for="qc_assay_parameter_assay_date">Assay date</label>
<input id="qc_assay_parameter_assay_date" class="string date_picker optional datepicker" type="date_picker" value="Sun, 03 Apr 2016 00:00:00 -0500" size="30" placeholder="mm/dd/yyyy" name="qc_assay_parameter[assay_date]">
</div>
<input class="btn" type="submit" value="Update Qc assay parameter" name="commit">
</form>
我想做这样的事情
jQuery ->
jQuery('input.date_picker').datepicker
dateFormat: 'mm/dd/yyyy'
todayHighlight: true
container: jQuery(this).closest('div').attr(class)
autoclose: true
todayBtn: true
container: jQuery(this).closest('div')
如果 date_picker
class 始终设置在 input
上,那么您可以这样做:
var nearestDivClassName = '.' + $('.date_picker').closest('div').attr('class')
jQuery('input.date_picker').datepicker
dateFormat: 'mm/dd/yyyy'
todayHighlight: true
container: nearestDivClassName
autoclose: true
todayBtn: true
请注意,container
选项需要是一个元素选择器,因此我们在 .attr('class')
.
更新
因为您需要它足够通用以解释多个 .date_picker
,您可以使用 jQuery 的 .each()
方法遍历它们,然后您可以使用this
和你一样 expect/need:
$('input.date_picker').each(function(){
$(this).datepicker({
dateFormat: 'mm/dd/yyyy',
todayHighlight: true,
autoclose: true,
todayBtn: true,
container: closestDivClassName($(this))
});
});
function closestDivClassName($el){
return '.' + $el.closest('div').attr('class');
}