当选择多个字母按钮时,它会替换文本输入

时间:2012-10-05 22:33:24

标签: javascript jquery html

我在下面有一个jsfiddle应用程序:

JSFIDDLE

如果你打开jsfiddle,你会看到一个包含“Answer”按钮的顶部控件。您还会看到一些字母按钮,一个“True”按钮和一个“False”按钮。

“True”和“False”按钮工作正常,这意味着如果用户单击“True”然后单击“False”,它将替换文本输入,因为您无法同时回答“True”和“错误”。

但是字母按钮有问题。如果单击字母按钮,您会发现可以单击多个字母按钮,这很好,但问题是它替换了那些不正确的字母的文本输入。如果选择了多个字母按钮,则它应显示所有这些字母按钮的文本输入,而不是用选择的最新字母按钮替换文本输入。

所以有人知道我需要在代码中更改以实现此目的吗?

2 个答案:

答案 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”。我会更多地研究它,但这可能足以让你弄明白。