首页 > 解决方案 > 选择单选按钮时,如何测试是否已经选择了另一个?

问题描述

我有一个表格,每行有 2 个单选按钮组 - 这是一系列问题的是/否选择。

选择“是”会增加一个变量以跟踪“是”答案的总数。除非已经选择了 YES,否则选择 NO 不会执行任何操作,在这种情况下,它会减少总数。

我可以增加 YES easy peasy。问题是在选择NO时检测YES的状态,因为通过选择NO,在我可以测试之前不再选择YES。薛定谔的纽扣?

如何在更改之前单击 NO 并测试 YES 的状态?

<input type='radio'  id = 'q1Y' name='q1' value='1Y' onChange='countY(this.id);'>
<input type='radio'  id = 'q1N' name='q1' value='1N'  onChange='countN(this.id);'>

function countN(id){
q = id.slice(0, -1);
/////////////////
//
// The problem is here.  By the time the code reaches this point, Y is already unchecked
//
////////////////
if($('#'+q+'Y').prop('checked')===true){
    score--;
    $("#scoretotal").html(score);
}

}

标签: javascriptjqueryformsradio-button

解决方案


您可以使用onmousedown而不是onchange. 这在更改按钮的值以反映单击的结果之前运行。

但不是递增和递减运行计数,而是简单地计算所有YES按钮以获得总数。

function count() {
    var total = $(":radio[value$=Y]:checked").length;
    $("#scoretotal").html(total);
}

推荐阅读