我讨厌甚至问这个,因为我确定这是明显的,但我花了几个小时寻找答案而找不到答案。
我有一个使用'slideup'功能的简单javascript(jquery)代码。我在我的表单上使用它部分显示或隐藏基于选择的字段。如果我将代码直接放入表单中,它就能完美运行。如果我将它放入assets / javascript文件夹,它将包含在application.js文件中,但不起作用。
为了进行测试,我还提出了一个javascript警报,只是为了查看它是否正在加载,它是,警报触发。我无法理解我的生活。
这是我的app / assets / javascript / form.js中的javascript:
$('#Postponement').change(function () {
if ($("#NewWeddingDate").is(":hidden")) {
$("#NewWeddingDate").show("slow");
} else {
$("#NewWeddingDate").slideUp();
}
})
$(function(){
alert('got to application.js!');
})
这是相关的表单代码(我正在使用Formtastic):
<div id='Postponement' >
<%= f.input :Postponement, :label => "Will the wedding be postponed?", :input_html => { :id => 'Postponement' }, :as => :select, :include_blank => false, :collection => ['Yes', 'No'], :selected => 'Yes' %> <br />
</div>
<div id = 'NewWeddingDate' >
<%= f.input :NewWeddingDate, :label => "The new wedding date is:", :input_html => { :id => 'NewWeddingDate' }, :as => :date_select, :start_month => Time.now.month, :start_year => Time.now.year, :end_year => Time.now.year + 10, :order => [:month, :year] %><br />
</div>
我的application.html.erb包含<%= javascript_include_tag "application" %>
,如果我将javascript代码直接添加到_form.html.erb文件中,它可以正常工作。我绝对是这个东西的新手,所以我确信它是显而易见的。我可以将代码保留在_form.html.erb中,但我正在努力做正确的事情(Rails)。任何和所有的帮助将不胜感激。
答案 0 :(得分:0)
尝试在加载文档后运行代码。现在,它可能在#Postponement存在之前立即执行,除非您将其放置在部分形式中。例如:
$(function() {
$('#Postponement').change(function () {
if ($("#NewWeddingDate").is(":hidden")) {
$("#NewWeddingDate").show("slow");
} else {
$("#NewWeddingDate").slideUp();
}
})
});
将您的功能放在$()
内,确保其运行after the DOM is fully ready。