我在下面有一个jsfiddle应用程序:
如果你打开jsfiddle,你会看到一个包含“Answer”按钮的顶部控件。您还会看到一些字母按钮,一个“True”按钮和一个“False”按钮。
“True”和“False”按钮工作正常,这意味着如果用户单击“True”然后单击“False”,它将替换文本输入,因为您无法同时回答“True”和“错误”。
但是字母按钮有问题。如果单击字母按钮,您会发现可以单击多个字母按钮,这很好,但问题是它替换了那些不正确的字母的文本输入。如果选择了多个字母按钮,则它应显示所有这些字母按钮的文本输入,而不是用选择的最新字母按钮替换文本输入。
所以有人知道我需要在代码中更改以实现此目的吗?
答案 0 :(得分:1)
您可以在此处为按钮生成data-hid
:
var hid = "hidden" + id + n + "value";
$(btn).attr("data-hid", hid);
基于此,您现在生成一个输入字段:
var input = '<input type="text" id="' + hid + '" value="' + value + '" name="' + id + 'value" />';
这里的id变量是按钮的id,例如answerC
。因此,当您第一次点击按钮时,您将隐藏#hiddenanswerC0value
。
但是,当您添加答案时,按钮将生成如下所示的ID:
.attr('id', $this.attr('id')+'Row');
所以最后会有额外的Row
。因此data-hid
和输入框也会不同(#hiddenanswerCRow0value
)。
修改强>
另一个问题是您实际上没有为新按钮创建数据隐藏。您只需在单击它们后为第一组按钮创建它。但是当您在C按钮已经激活的情况下创建第二组(点击后)时,它将不会设置data-hid
,因此您无法将其删除。
答案 1 :(得分:0)
在您遇到问题的第一个输入ID似乎没有正确设置。我显示它获得了一个ID“#hiddenanswerC0value”,但如果我没有弄错的话,它应该是“#hiddenanswerCRow0value”。我会更多地研究它,但这可能足以让你弄明白。