1

我什至不想问这个问题,因为我确信这很明显,但我花了几个小时寻找答案却找不到答案。

我有一个使用“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)方式做事。任何和所有的帮助将不胜感激。

4

1 回答 1

0

尝试在加载文档后运行您的代码。现在,它可能会在#Postponement 甚至存在之前立即执行,除非您将其放置在部分表单中。例如:

$(function() {
    $('#Postponement').change(function () {
        if ($("#NewWeddingDate").is(":hidden")) {
          $("#NewWeddingDate").show("slow");
        } else {
          $("#NewWeddingDate").slideUp();
        }
    })
});

将你的函数放在DOM 中$()确保它在 DOM 完全就绪后运行。

于 2013-03-28T03:22:14.987 回答