2012-01-19 57 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:没有为这两个无线电