2014-02-07 40 views
0

我現在使用的form_for在以下領域Ruby on Rails的JavaScript來禁用文本字段複選框

<%= f.checkbox :free %> 
<%= f.checkbox :rsvp %> 

<%= f.textfield :price %> 

也是我的觀點之一,我完全失去了對如何內實際嵌入的JavaScript我的html/erb視圖讓一切工作在一起。

首先,我希望能夠一次只允許其中一個使用。例如,如果一個框被選中,另一個框和價格被禁用。如果有價格輸入,那麼這兩個盒子都是禁用的。

我想我可以這樣做:

$(document).ready(function() { 
    $("#event_free").click(function() { 
     if ($(this).is(":checked")) { 
      $("#event_price").prop("disabled", true); 
     } else { 
      $("#event_price").prop("disabled", false); 
     } 
    }); 
}); 

當然,這僅僅是對自由複選框。必須有更好的方式來做到這一點。

+0

您只想選中其中一個複選框,__radio options__有什麼問題? – Satpal

+0

我覺得用單選按鈕你最終會選擇其中的一個。但在這種情況下,文本框也需要啓用/禁用 – adanot

+0

您可以稍微修改您當前的jQuery腳本 – Satpal

回答

1

要在.html.erb文件中嵌入JavaScript中使用此文件中的以下內容:

<script type="text/javascript"> 
    //your javascript code here 
</script> 
0

前段時間我遇到過類似的問題。這可以幫助你:

HTML:

<div data-limited-checkboxes data-limit="3"> 
    <input type="checkbox" checked /> 
    <input type="checkbox" checked /> 
    <input type="checkbox" checked /> 
    <input type="checkbox" /> 
    <input type="checkbox" /> 
    <input type="checkbox" /> 
    <input type="checkbox" /> 
</div> 

JS:

jQuery(function($) { 
    var restrictCheckboxes = function(container) { 
    var limit = $(container).data("limit"); 
    var checkboxes = $(container).find("input:checkbox"); 
    var selectedCount = checkboxes.filter(":checked").length; 

    checkboxes.filter(":not(:checked)").prop("disabled", parseInt(limit) <= selectedCount); 
    }; 

    $("[data-limited-checkboxes] input:checkbox").bind("change", function(checkbox) { 
    restrictCheckboxes($(this).parents("[data-limited-checkboxes]")); 
    }); 

    $("[data-limited-checkboxes]").each(function() { 
    restrictCheckboxes($(this)); 
    }); 
});