2015-06-21 81 views
1

我試圖在Rails的4軌道4&咖啡腳本形式幫手隱藏選中場

我用簡單的形式爲形式的應用程序,有我使用了JavaScript一個js表單輔助文件根據用戶在瀏覽表單時回答問題的方式隱藏或顯示錶單元素。

我的問題是,這個js函數在初始創建時工作正常,但是如果我回來編輯表單,當草稿屬性爲== false時會顯示提醒id內容。

有沒有辦法解決這個問題?

我的形式有:

<%= f.simple_fields_for :scope do |finalises_s| %> 
     <%= finalises_s.simple_fields_for :finalise do |dr| %> 

      <div class="row"> 
      <div class="col-md-3 col-md-offset-1"> 

       <%= dr.label :draft, 'Would you like to save this draft and finish it later?', class: 'question-project' %> 
      </div> 
      <div class="col-md-7"> 
       <%= dr.collection_radio_buttons :draft, [[true, ' Yes, save a draft'], [false, ' No, publish it']], :first, :last, {:item_wrapper_class => 'fixradio'}, {:class => "response-project"} %> 
      </div> 
      </div> 
      <div id="reminder"> 
      <div class="row"> 
       <div class="col-md-3 col-md-offset-1"> 

       <%= dr.label :reminder, 'Would you like a reminder to complete this draft?', class: 'question-project' %> 
       </div> 
       <div class="col-md-7"> 
       <%= dr.collection_radio_buttons :reminder, [[true, ' Yes'], [false, ' No']], :first, :last, {:item_wrapper_class => 'fixradio'}, {:class => "response-project"} %> 
       </div> 
      </div> 

我的JS形式的輔助性文件有:

if $("input:radio[name='"+ inString + "[scope_attributes][finalise_attributes][draft]']").is(':checked') 
    $('#reminder').show() 
else 
    $('#reminder').hide() 
$(document).on 'change', "input:radio[name='"+ inString + "[scope_attributes][finalise_attributes][draft]']",()-> 
    if $(this).val() == 'true' 
    $('#reminder').show() 
    else 
    $('#reminder').hide() 

回答

0

可能有幾種不同的方式來做到這一點,但我確實非常類似的東西。

附加的ID或類可以使用稍後結合的單選按鈕(在我的情況下,對於每個無線電/值組合,我添加一個唯一的類似class: this_radio_value_true)。

同樣,附加一個id或類到你想要影響的標記部分(在我的情況下,我添加了一個id到form_group,我想隱藏/顯示如id: stuff_to_control)。

觸發jQuery的這些元素:

$('.this_radio_value_true').on('click', function() { 
    $('#stuff_to_control').show(); 
}); 

$('.this_radio_value_false').on('click', function() { 
    $('#stuff_to_control').hide(); 
});