在jQuery中,如果所有的单选框都选择了一个选项,则显示一个元素。

28 浏览
0 Comments

在jQuery中,如果所有的单选框都选择了一个选项,则显示一个元素。

我试图根据所有单选按钮是否有选择来控制表单显示/隐藏提交按钮 - 这是我目前的代码.. 有没有想法我做错了什么?

0
0 Comments

这个问题的出现是因为在jQuery中,当我们想要显示一个元素,但前提是所有的单选框都有选择时,我们不能简单地使用:checked选择器来判断是否有单选框被选中。因为:checked选择器只会返回任意一个被选中的单选框,而不会判断所有的单选框是否都被选中。

解决这个问题的方法是手动遍历所有的单选框,判断它们是否都被选中。以下是一个解决方案:

// 获取所有的单选框
var radios = $('input[type="radio"]');
var allChecked = true;
// 遍历所有的单选框
radios.each(function() {
  // 判断是否有单选框未被选中
  if (!$(this).is(':checked')) {
    allChecked = false;
    return false; // 结束遍历
  }
});
// 根据结果显示或隐藏元素
if (allChecked) {
  $('#element').show();
} else {
  $('#element').hide();
}

以上代码首先获取了所有的单选框,并创建一个变量allChecked来表示是否所有单选框都被选中。然后通过遍历每个单选框,判断是否有任何一个未被选中,如果有就将allChecked置为false,并使用return false来提前结束遍历。最后根据allChecked的值来显示或隐藏相应的元素。

这种方法虽然需要手动遍历单选框,但可以准确地判断是否所有的单选框都被选中,并根据结果来显示或隐藏元素。

0
0 Comments

在jQuery中,如果我们想要检查一组单选框是否全部被选中,可以使用以下代码:

$('.toCheck').length == $('.toCheck:checked').length;

如果这个表达式的结果为true,那么代表所有被选择的单选框都被选中了。

这段代码对于复选框来说是有效的,但对于单选框来说就不适用了(虽然对于复选框,我更倾向于搜索`'.toCheck:not(:checked)'`来找到任何未被选中的复选框)。

据我所知,`:checked`在单选按钮上也是有效的。

然而,有人对这段代码的理解有误。一组单选按钮会返回多个元素,这段代码检查任意一个元素是否被选中,请参考:[api.jquery.com/is](http://api.jquery.com/is)。但是在一组单选元素中,当然有一些元素是未被选中的。

有人回答说:“我仍然不明白我错在哪里。查看这个[fiddle](http://jsfiddle.net/mrobin/tqFbQ/1/)。看起来是有效的。逐个选中单选按钮试试看。你是说以`name`属性分组吗?”

另一个人回答:“你每个组中只有一个单选按钮(这当然对于单选按钮是没有意义的)。再添加一个并尝试一下,你会发现问题的:[jsfiddle.net/tqFbQ/2](http://jsfiddle.net/tqFbQ/2)”

0
0 Comments

问题的出现原因是希望在所有的单选框都有选择时显示一个元素。上述代码通过遍历所有的单选框来计算单选框的总数。然后,通过判断被选中的单选框的数量是否等于总数,来确定是否显示一个具有特定id的提交按钮。

为了解决这个问题,我们可以使用以下代码:

var count = 0;
$(':radio').each(function(){
   count++;
});
if ($(':radio:checked').length == count) {
        $('#submit-btn').show();  
}

这段代码首先定义了一个变量count,并将其初始化为0。然后,使用jQuery的选择器找到页面中的所有单选框,并使用each()方法遍历每个单选框。在遍历过程中,每次count的值都会递增。

接下来,通过判断被选中的单选框的数量是否等于count的值来确定是否显示一个具有id为submit-btn的元素。如果被选中的单选框的数量等于count的值,就会通过show()方法显示该元素。

这样,当所有的单选框都有选择时,就会显示一个具有id为submit-btn的元素。

0