2012-08-02 114 views
0

我在這裏有一個非常討厭的問題!列表中的單選按鈕不組

我有一個<ul>在每個<li>中有一組輸入。在每個列表元素中都有一個單選按鈕,我想將它們組合在一起以使它們在單擊時切換。

問題是收音機不能連接!如果我點擊其中兩個,他們都會被檢查!

下面的代碼:http://jsfiddle.net/bakaburg1/Djq5q/1/

注意:這是一個WordPress的自定義字段中的代碼。

非常感謝!

EDIT1: ,重要的是在每一個列表元素領域保持連接,以便在PHP端我有一個數據結構,例如:暫時我修補的問題 :

array (
    0 => 
    array (
    'answer' => 'answer1', 
), 
    1 => 
    array (
    'answer' => 'answer2', 
), 
    2 => 
    array (
    'is_right' => 'on', 
    'answer' => 'answer3', 
), 
    3 => 
    array (
    'answer' => 'yiuyiuyiuj', 
), 
) 

EDIT2一些jQuery的:

jQuery('.mm_ps_answers input:radio').click(function(){ 
jQuery(this).parents('ul').find('input:radio').not(this).attr('checked', false) 
}) 

不知道最優雅的解決方案,雖然,隨意評論(未回答)在這個片段中呢!

編輯3: 我解決了問題,給三個不同的名稱的字段,然後合併POST數據在一個數組中,然後序列化並保存在數據庫中。

<li> 
    <a class="mm_ps_move button"><img src="http://localhost:8888/minimamedicamenta/wp-content/themes/minima/img/move.png"></a> 
    <a class="mm_ps_delete_answer button">Delete Answer</a> 
    <input type="radio" class="mm_ps_is_right" name="mm_ps_answers_is_right[]"> 
    <input type="text" name="mm_ps_answers_input[]" value=""> 
    <input type="hidden" name="mm_ps_answers_impressions[]"> 
    <span class="mm_ps_impressions">impressions: <span>0</span></span> 
</li> 

另一個問題POP操作起來雖然...而在文本輸入字段後端發佈數據是每個字段值的良好有序的陣列,也是空的,在單選按鈕只能發送一個價值,所以我不知道最好的列表元素已被檢查,任何幫助?這裏的是三個輸入的POST數據(值是隨機字符串):

[04-Aug-2012 17:18:45] Line (in): 
array (
    0 => 'cvxcv', 
    1 => 'vs', 
    2 => '', 
    3 => 's', 
) 
[04-Aug-2012 17:18:45] Line (in): 
array (
    0 => 'on', 
) 
[04-Aug-2012 17:18:45] Line (in): 
array (
    0 => '', 
    1 => '', 
    2 => '', 
    3 => '', 
) 

EDIT4: 我修補用的JavaScript上修改每一個動作分配增量數值的單選按鈕的問題該列表(排序,添加,刪除元素)。雖然不是很乾淨。

回答

2
<ul class="mm_ps_answers manage_list ui-sortable"> 
<li> 
    <input type="radio" name="SameName"> 
    <input type="text" name="mm_ps_answers[0][answer]" value="jkjhk"> 
    <span class="mm_ps_impressions">impressions: </span> 
</li> 
<li> 
    <input type="radio" name="SameName"> 
    <input type="text" name="mm_ps_answers[1][answer]" value="lknjlk"> 
    <span class="mm_ps_impressions">impressions: </span> 
</li> 
<li> 
    <input type="radio" name="SameName"> 
    <input type="text" name="mm_ps_answers[2][answer]" value="òklkjl"> 
    <span class="mm_ps_impressions">impressions: </span> 
</li> 
<li> 
    <input type="radio" name="SameName"> 
    <input type="text" name="mm_ps_answers[3][answer]" value="p09i0i"> 
    <span class="mm_ps_impressions">impressions: </span> 
</li> 

,使一個瀏覽器來切換他們的是單選按鈕的名稱的屬性。將所有這些單選按鈕命名爲相同的(每個組應具有相同的名稱),並且它們將切換。

+0

但我如何使它們對應於列表元素中的其他輸入?我需要一個結構良好的數組來完成這個工作。 考慮到順序很重要,因爲我也使用jQuery UI的可排序插件,所以我需要一個一致的系統來連接輸入字段。 – Bakaburg 2012-08-02 12:52:20

+0

什麼意思是「使它們對應於列表元素中的其他輸入」? – Apurav 2012-08-02 12:58:36

+0

檢查問題中的編輯! :) – Bakaburg 2012-08-02 13:06:09

1

要將單選按鈕組合在一起,必須在name屬性中指定相同的值。

ex。(從W3Schools的)

<form action=""> 
<input type="radio" name="sex" value="male" /> Male<br /> 
<input type="radio" name="sex" value="female" /> Female 
</form> 

編輯: 爲了讓您在的jsfiddle正在策劃的順序鏈接你提供我會建議你做一個反覆陳述一個列表項: (對不起,不正確的PHP代碼,但我沒有在很長一段時間使用它)

foreach($answer as $value){ 
<li> 
    <input type="radio" name="answer" value="$value[is_right]"> 
    <input type="text" name="$value[answer]" value="jkjhk"> 
    <span class="mm_ps_impressions">impressions: </span> 
</li> 
} 
+0

被懷疑爲,請參閱Apurav的評論回答 – Bakaburg 2012-08-02 12:54:55

+0

我做了一些更改。希望這是你要找的。 – Clayton 2012-08-02 13:04:11

+0

謝謝,實際上這些列表項是用PHP中的foreach創建的:) – Bakaburg 2012-08-02 13:04:58

1

如果這是不可能的使用name屬性爲某種原因(例如你的名字屬性動態填充 - 我懷疑這是)你可以使用jQuery來切換ckboxes:

$(document).ready(function() { 
    $('input[type="radio"]').click(function() { 
     $('input[type="radio"]').prop('checked', false); 
     $(this).prop('checked', true);   
    });   
}); 
+0

我也是這樣做的,以解決問題:)我想知道是否有更優雅的解決方案。 – Bakaburg 2012-08-02 13:07:34

+1

抱歉,在我發佈之後纔看到編輯!如果絕對沒有辦法可以使用'name'屬性,那麼jQuery是下一個最好的東西。 – billyonecan 2012-08-02 13:10:32