2012-01-19 74 views
-2

我有一個jsfiddle應用程序here,並且在正確顯示單選按鈕時遇到問題。我單選按鈕的3個問題

如果您打開應用程序,您會在頂部看到一組單選按鈕。請選擇其中一個單選按鈕,然後單擊「添加單選按鈕」按鈕,在表格行中添加下面的單選按鈕。現在的問題是:

  1. 首先這個詞的「多」不會出現第二個單選按鈕表一行。這應該會出現。

  2. 其次,它不檢查我選擇的單選按鈕。例如,如果我在頂部選擇了「單個」,當我添加一個新的行時,它應該檢查新行中的單個單選按鈕。

  3. 最後,我可以在表格行中選擇一個單選按鈕,但是如果我這樣做,那麼頂部的單選按鈕之一的選擇將被取消選中。這不應該發生。

如果我在其中一個表格行中檢查一個單選按鈕,它應該不會影響頂部的收音機底部。

這些問題如何解決?

+0

你必須找人把收音機的價值使用相同的名稱(單/多個),然後創建邏輯以將適當的元素添加到DOM。 'if($('。replyBtn').val()=='single'){/ *做單個代碼* /} else {/ *做多個代碼* /}' – Jasper

+0

此外,所有具有相同名稱的表單元素分享價值。所以不要將新輸入命名爲「答覆」。然後命名一個像'reply_1'這樣獨特的東西,以便它們可以擁有自己獨特的價值。順便說一句,我投票結束,因爲它似乎並不像你試圖自己解決你的問題。 – Jasper

回答

1

這是因爲您正在創建新的輸入單選按鈕,但未給它們唯一的名稱。同時爲了保持檢查狀態,您必須首先從頂部的單選按鈕中找到選中的元素,並將其設置爲新創建的單選按鈕。

我已經修復了所有提到的3個問題,在工作演示中看一看。

Demo

+0

謝謝,那已經很出色:) – BruceyBandit

0

1)節點所需要的文本包含的東西。當我在HTML中添加<p>標籤時,它工作正常:http://jsfiddle.net/6TcwS/2/

2)這是因爲您在解析新HTML時會在下面添加按鈕時生成按鈕。如果要保留按鈕狀態,您必須從頁面中克隆真正的DOM元素:http://jsfiddle.net/6TcwS/6/

3)您必須更改新按鈕的名稱才能避免該行爲。

0

這裏是你的修改功能:ANS的1和2

function insertQuestion(form) { 
    var $tbody = $("<tbody></tbody>"); 
    var $tr = $("<tr class='optionAndAnswer'></tr>"); 
    var $replies = $("<td class='noofreplies'></td>"); 
    var $this = $(this); 
    var $btnReply = "<input type='radio' name='reply1' value='single' class='replyBtn' checked=" + $(':radio[value="single"]').is(':checked') + " /> Single<br /><input type='radio' name='reply2' value='multiple' class='replyBtn' checked=" + (':radio[value="multiple"]').is(':checked') + " /> Multiple"; 
    $replies.append($btnReply); 
    $tbody.append($tr); 
    $tr.append($replies); 
    $('#qandatbl').append($tbody); 
} 

爲答3:沒有爲這兩個無線電