我克隆了一些单选按钮,附在页面的每一行。当我尝试循环遍历它们以“检查”页面加载时正确的单选按钮时,它仅适用于变化的最后一个。
以下是Codepen上的问题: http://codepen.io/trinzia/pen/dpOoRk
var buttonpanel = $("#sectionbuttons");
$('section').each(attachRowButtons);
function attachRowButtons(i, elem) {
var newpanel = buttonpanel.clone(true, true);
$(elem).append(newpanel);
newpanel.removeAttr("id").removeClass('collapse');
var d = $(elem).data('type');
if (d) {
newpanel.find('input[name="myradio"]:radio').each(getType);
function getType(i, elem) {
var n = $(this).val().search(d);
if (n > -1) {
$(this).prop("checked", "checked"); //correct
}
}
}
}
如果你看一下codepen,你会看到,即使每一行都匹配,也只检查最后一个单选按钮组。我需要正确检查值(无线电检查=检查),每行一个。
谢谢!
答案 0 :(得分:2)
您只选中1个单选按钮的原因是因为它们共享相同的名称属性" myradio"。您需要更改克隆输入的名称才能成为单独的组。
你可以这样做:
var newpanel = buttonpanel.clone(true, true);
newpanel.find('input').each(function() {
$(this).attr('name', 'anothername');
});
稍后当您在面板中找到输入元素时,您应该更改:
newpanel.find('input[name="myradio"]:radio').each(getType);
到
newpanel.find('input:radio').each(getType);
答案 1 :(得分:2)
更新js请链接:http://codepen.io/anon/pen/rrWVEr
response.setContentType("application/pdf")
response.setHeader("Content-Disposition", "inline; filename= .. " )
答案 2 :(得分:1)
您已经有两个正确答案了。是的,问题出在same named radio buttons
上。由于你已经用其他答案找出了它,我想在检查单选按钮时使代码更简单。
您可以在if(d)
块
if ( d ) {
newpanel.find( 'input[name="myradio"][value="'+ d +'"]')
.prop("name","random" + i)
.prop("checked", "checked");
}
您可以使用value
选择器而不是循环并尝试查找与该值匹配的选择器。