【问题标题】:How do I uncheck a radio button within an array with javascript如何使用javascript取消选中数组中的单选按钮
【发布时间】:2017-01-04 03:42:04
【问题描述】:

如何取消选中输入框中的单选按钮。我一直在尝试使用 javascript 取消选中此单选按钮,但当它在数组中时我似乎无法做到这一点

这是我想用 javascript 取消检查的代码

<?php
    for($i = 0; $i < 3; $i ++){
        $num = rand(0,2);
        for($j = 0; $j < 3; $j++){
            if($num){
                $check = 'checked';
            }else
                $check='';
            echo '<input name="acc['.$i.']" type="radio" '.$check.'>';
        }
        echo '<br/>';

    }
?>

我已尝试使用此 javascript,但我不知道如何指向实际的单选按钮以取消选中

$(':radio').mousedown(function(e){
    var $self = $(this);
    if( $self.is(':checked') ){
        var uncheck = function(){
            setTimeout(function(){
                $self.removeAttr('checked');
            },0);
        };
        var unbind = function(){
            $self.unbind('mouseup',up);
        };
        var up = function(){
            uncheck();
            unbind();
        };
        $self.bind('mouseup',up);
        $self.one('mouseout', unbind);
    }
});

【问题讨论】:

  • 在 JavaScript 代码中,您正在检查 mousedown 并再次取消选中 mouseup,这是没有意义的。这就是你要找的东西吗?
  • 1:为什么点击收音机时取消选中?这就是复选框的用途。 2:$("input[name=&lt;? echo acc['.$i.'] ?&gt;]").prop("checked",false);
  • @mplungjan 我希望能够取消选中,因为如果用户不想选中该行中的任何单选按钮,一旦用户按下它,就无法更改
  • 复选框就是用来做这个的

标签: javascript php jquery html


【解决方案1】:

所以你有一些行,每行有 3 个收音机。

  • 一个收音机可以切换
  • 如果用户在一行中选择了一个单选,其他行中的所有单选都应变为“未选中”:

var $radios = $(":radio");

$radios.on("mouseup", function(e) {

  var name  = $(this).prop("name");

  // Make togglable
  if(this.checked){
    setTimeout($.proxy(function() {
      this.checked = false;
    }, this),0);
  }
  
  // Unselect radios of other rows
  $radios.not( $("[name='"+ name +"']") ).prop("checked", false);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<br>A
<input type="radio" name="acc[0]">
<input type="radio" name="acc[0]">
<input type="radio" name="acc[0]">

<br>B
<input type="radio" name="acc[1]">
<input type="radio" name="acc[1]">
<input type="radio" name="acc[1]">

<br>C
<input type="radio" name="acc[2]">
<input type="radio" name="acc[2]">
<input type="radio" name="acc[2]">

(请注意,您的 PHP 当前将 checked 全部三个收音机放在一行中!使用 Inspect Element 来查看该问题。您应该解决此问题;但我不知道您为什么使用随机 0、1、2...无论如何,所以我无法在这里为您提供帮助)

【讨论】:

  • 它在嵌套for的数组内时不取消检查。
  • @learningbyexample 这是因为您在一个 ROW 中有三个已检查的收音机(您的 PHP 搞砸了) - 使用检查元素并自己查看。 (顺便说一句,我不知道你为什么使用那个随机的东西。正如你所看到的,当你有一个有效的 HTML 时,脚本应该可以工作)
  • 我只需要随机检查一个单选按钮,因此 $num rand() 并不重要。每行只能选中一个单选按钮
猜你喜欢
  • 2013-06-14
  • 2020-04-29
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 2016-02-10
  • 2011-01-08
相关资源
最近更新 更多