2013-09-16 54 views
0

我嘗試爲我的圖像放置單選按鈕。當用戶點擊一個圖像時,應該將其他單選按鈕設置爲false。現在,我有這樣的事情:Javascript和radio_button in rails - 狀態只檢查一次

$('.image_choose').each(function() { 

    $(this).click(function() { 

      $('.image_choose').each(function() { 
       $(this).attr("style","border:1px solid #e5e5e5"); 
       $(this).attr("id","in_active"); 
       $inputs = $(this).find('input[type="radio"]'); 
       $inputs.attr("checked", false); 
      }); 
       $label = $(this), $input = $(this).find('input[type="radio"]'); 
     $label.find('input').attr("checked", true); 
      }); 
    }); 

的Rails:

<% @array_new.each do |a|%> 
    <div class='image_containter'> 
     <li class='image_choose'>  
     <%= f.radio_button :image_url ,a %> 

        </li> 
      </div> 
    <% end %> 

所以我想 - 當image_choose元素上的用戶點擊,首先爲每image_choose我設置ATTR和檢查,以虛假的。然後將它更改爲$ this元素爲true。這裏有什麼問題?只有第一次點擊圖像時,radio_button纔會更改圖形和狀態。

一些解決:

我不認爲它好辦法做到這一點,但我發現:

$label.find('input').prop("checked", true); 
$label.find('input').attr("checked", true); 

當我做到這一點 - 它開始像它應該工作。只有.prop沒有設置輸入checked ='checked',只有.attr不會改變單選按鈕的值第二次點擊...我不明白這裏的錯誤。

+0

您可以加入HTML源代碼,也可以創建在的jsfiddle一個例子? – reporter

+0

在html中,我點擊的每個輸入都具有「已檢查」狀態,並且其他輸入檢查已被刪除。但仍然單選按鈕不是「檢查」,它的圖不是「檢查」 - 我的腳本也沒有看到它被檢查。 – Wordica

+0

有人可以幫忙嗎?這個腳本有什麼問題?只有首先點擊每個image_choose更改radio_button。在螢火蟲我看到checkec ='檢查',但事件,radio_button沒有檢查。 – Wordica

回答

0

您不需要處理Javascript以這種方式使用單選按鈕。

爲了使事情更容易,請在列表中爲每個單選按鈕使用實際的HTML <label>標記。點擊該標籤中的任何位置時,將觸發單選按鈕。只要確保您通過ID將標籤正確鏈接到單選按鈕。

此外,請確保您的單選按鈕ID始終是唯一的。所有單選按鈕的name屬性需要相同,因此瀏覽器知道它們是單選按鈕組。

使用此ERB(適應,如果不是100%正確):

<% @image_urls.each do |img| %> 
    <%= f.label :image_url, img_tag(img) %> 
    <%= f.radio_button :image_url, img %> 
<% end %> 

結果應該是這個樣子:

<label for="image_url_your_img_val1"> 
    <img src="yourimage1.png"/> 
</label> 
<input type="radio" name="image_url" id="image_url_your_img_val1" value="your_img_val1"/> 

<label for="image_url_your_img_val2"> 
    <img src="yourimage2.png"/> 
</label> 
<input type="radio" name="image_url" id="image_url_your_img_val2" value="your_img_val2" />