【发布时间】:2016-10-18 16:37:35
【问题描述】:
我有一个在Angular2 开发的测验模块,所以只有一些带有建议答案的问题,你必须检查只有一个答案,我知道单选按钮可以处理这种情况,但我想要它是带有单选按钮行为的复选框,问题是我完成了部分工作,但由于它在 *ngFor 循环中更复杂,一旦我检查 B 问题答案,A 问题检查答案将被取消选中并且很快。
这是我的 HTML:
<div *ngFor="#qt of listQuestion"><h3 class="uk-accordion-title" >{{qt.wordingQ}}</h3>
<div class="uk-accordion-content">
<input type="checkbox" class="cb" id="0" [(ngModel)]="qt.chp[0]" onchange="cbChange(this)" />
<label for="0" class="inline-label" > <b>{{qt.lpo[0]}}</b></label><br><br>
<input type="checkbox" class="cb" id="1" [(ngModel)]="qt.chp[1]" onchange="cbChange(this)" />
<label for="1" class="inline-label"><b>{{qt.lpo[1]}}</b></label><br><br>
<input type="checkbox" class="cb" id="2" [(ngModel)]="qt.chp[2]" onchange="cbChange(this)"/>
<label for="2" class="inline-label"> <b>{{qt.lpo[2]}}</b></label><br><br>
<input type="checkbox" class="cb" id="3" [(ngModel)]="qt.chp[3]" onchange="cbChange(this)"/>
<label for="3" class="inline-label"><b>{{qt.lpo[3]}}</b></label>
</div></div>
这是制作单独检查方式的脚本:
<script>
function cbChange(obj) {
var cbs = document.getElementsByClassName("cb");
for (var i = 0; i < cbs.length; i++) {
cbs[i].checked = false;
}
obj.checked = true;
}
</script>
如您所见,这是一个 *ngFor 循环来加载问题列表;每个问题都有一个命题列表(lpo[i]),[(ngModel)]="qt.chp[i]" 用于获取每个命题的状态(检查命题),我想我必须将每个 onchange 函数引用到每个唯一的 ngModel(因为它正在索引中)但我不知道如何。有什么帮助吗?
(这里是真实情况的图片)
【问题讨论】:
-
看问题的措辞,似乎你没有明白这一点,我不想要任何样式的东西,我的复选框和单选按钮一样工作顺利,问题是一旦我检查了一个在第二个问题中回答,第一个问题中的选中答案将被取消选中,该行为应该是每个问题.. 明白了吗?
标签: javascript html loops checkbox angular