Rails Simple Form Bootstrap - Javascript if语句显示输入

时间:2014-09-24 23:27:39

标签: javascript jquery ruby-on-rails twitter-bootstrap simple-form

我有一个带有简单表格和引导程序的rails 4 app。

我想在我的表单中提出一个问题,询问用户是否需要调查回复。如果答案是对的,那么我想问一个跟进问题。我的两个调查问题是:

<%= f.input :survey, :as => :boolean, :label => false, inline_label: 'Do you need survey responses?'  %>
<br><br>


    <%= f.input :survey_link, label: 'Where is your survey?', :label_html => { :class => 'question-data' }, placeholder: 'Include a link to your survey', :input_html => {:style=> 'width: 650px; margin-top: 20px',  class: 'response-project'} %>

JS if语句是否是处理此任务的最佳方式?我想隐藏第二个问题,直到用户对第一个问题回答为真。

如果是这样,我很难理解如何使这个JS工作。

我试过了:

 if (:survey is :true) {
    :survey_link;
}

我无法找到任何资源来帮助解释如何执行此操作。非常感谢帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

显然,下面的代码取决于surveysurvey_link输入的名称在实际HTML中的含义。因此,如果在此示例中,它适用于@user

<% simple_form_for @user do |f| %>
    <%= f.input :survey, :as => :boolean, :label => false, inline_label: 'Do you need survey responses?'  %>
    <%= f.input :survey_link, label: 'Where is your survey?', :label_html => { :class => 'question-data' }, placeholder: 'Include a link to your survey', :input_html => {:style=> 'width: 650px; margin-top: 20px',  class: 'response-project'} %>
<% end %>

然后JQuery应该看起来像(注意user部分 - 你可能需要改变它):

<script>
$(function() {
    // Hide the survey_link input
    $('input[name="user[survey_link]"]').hide();
    $('input[name="user[survey_link]"]').closest("label").hide();

    // When the survey checkbox changes
    $('input[name="user[survey]"]').change(function() {
         $('input[name="user[survey_link]"]').closest("label").toggle(this.checked);
         $('input[name="user[survey_link]"]').toggle(this.checked);
    });
});
</script>